我有一个用于集群的应用程序,以便在一个或多个失败时保持其可用,并且我想实现一种方法来检查 java 中 jar 文件的版本。
我有这段代码可以做到这一点(例如:在 MyClass 类中):
URLClassLoader cl = (URLClassLoader) (new MyClass ())
.getClass().getClassLoader();
URL url = cl.findResource("META-INF/MANIFEST.MF");
Manifest manifest = new Manifest(url.openStream());
attributes = manifest.getMainAttributes();
String version = attributes.getValue("Implementation-Version");
当我将 jar 作为应用程序运行时,它工作正常,但是当我在其他应用程序中使用 jar 文件作为库时,我得到了其他应用程序的版本号。
所以我的问题是,如何获取包含 MyClass 的 jar 的清单?
注意:我对使用静态约束的解决方案不感兴趣,例如
'classLoader.getRessource("MyJar.jar")' 或 File("MyJar.jar")
获取实现版本的正确方法是使用Package.getImplementationVersion() 方法:
String version = MyClass.class.getPackage().getImplementationVersion();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)