Java 读我自己的Jar清单
我需要阅读该Manifest
文件,该文件提供了我的课程,但是当我使用时:
getClass().getClassLoader().getResources(...)
我MANIFEST从第一个.jar
加载到Java运行时中就得到了。
我的应用程序将从applet
或Webstart
运行,
所以我无法访问自己的.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