Java 读我自己的Jar清单

我需要阅读该Manifest文件,该文件提供了我的课程,但是当我使用时:

getClass().getClassLoader().getResources(...)

我MANIFEST从第一个.jar加载到Java运行时中就得到了。

我的应用程序将从appletWebstart运行,

所以我无法访问自己的.jar文件。

我实际上是想Export-package.jar启动Felix OSGi的中读取属性,因此可以将这些包公开给Felix。有任何想法吗?

回答:

你可以执行以下两项操作之一:

调用getResources()并遍历返回的URL集合,将它们作为清单读取,直到找到你的URL:

Enumeration<URL> resources = getClass().getClassLoader()

.getResources("META-INF/MANIFEST.MF");

while (resources.hasMoreElements()) {

try {

Manifest manifest = new Manifest(resources.nextElement().openStream());

// check that this is your manifest and do what you need or get the next one

...

} catch (IOException E) {

// handle

}

}

你可以尝试检查是否getClass().getClassLoader()是的实例java.net.URLClassLoader。Sun的大多数类加载器包括AppletClassLoader。然后,你可以对其进行转换并调用findResource()已知的(至少对于applet而言)直接返回所需的清单:

URLClassLoader cl = (URLClassLoader) getClass().getClassLoader();

try {

URL url = cl.findResource("META-INF/MANIFEST.MF");

Manifest manifest = new Manifest(url.openStream());

// do stuff with it

...

} catch (IOException E) {

// handle

}

以上是 Java 读我自己的Jar清单 的全部内容, 来源链接: utcz.com/qa/406443.html

回到顶部