我创建了简单的AppInfo库,它提供了一种简单的方法来显示有关 Java 应用程序中正在运行的软件版本的始终有效、自动更新的信息,这在与 CI 服务器的自动构建结合使用时特别有用。
在我的库中,有必要从 JAR(在桌面应用程序的情况下)读取 MANIFEST.MF,这是运行的最终应用程序(而不是从类路径上的任何其他应用程序)。目前,我使用基于 Sun 论坛中的一个想法的解决方案(该链接不再有效):
String classContainer = classFromRightJar.getProtectionDomain().getCodeSource().getLocation().toString();
URL manifestUrl = new URL("jar:" + classContainer + "!/META-INF/MANIFEST.MF");
它通常可以工作,但它会强制桌面应用程序的开发人员创建额外的 bean,该 bean 配置有位于特定 JAR 中的类的名称。
有没有更好的/通用的解决方案,它给出了 JAR 的名称/位置/MANIFEST.MF/来自运行桌面应用程序的 JAR?
感谢您的
帮助