gpt4 book ai didi

java - 如何获取运行桌面应用程序的 JAR 的名称?

转载 作者:行者123 更新时间:2023-11-30 05:09:03 27 4
gpt4 key购买 nike

我创建了简单的库 AppInfo提供了一种简单的方法来显示有关 Java 应用程序中正在运行的软件版本的始终有效、自动更新的信息,这在与 CI 服务器的自动构建结合使用时特别有用。

在我的库中,有必要从 JAR(如果是桌面应用程序)读取 MANIFEST.MF,这是运行的最终应用程序(而不是从类路径上的任何其他应用程序)。目前,我使用的解决方案基于 Sun 论坛的想法(该链接已不再工作):

String classContainer = classFromRightJar.getProtectionDomain().getCodeSource().getLocation().toString();
URL manifestUrl = new URL("jar:" + classContainer + "!/META-INF/MANIFEST.MF");

它通常可以工作,但它迫使桌面应用程序的开发人员创建使用位于特定 JAR 中的类的名称配置的附加 bean。

是否有更好/通用的解决方案,可以提供 JAR 的名称/位置/MANIFEST.MF,该 JAR 是运行桌面应用程序的?

感谢您的帮助
马尔辛

最佳答案

有一个系统属性“sun.java.command”,其中包含 jar 名称或类名称以及所有 main() 方法参数。所以对于调用

java -jar test.jar arg1 arg2

你会得到“test.jar arg1 arg2”和

java test.Test arg1 arg2

属性值将为“test.Test arg1 arg2”。正如该属性的名称所暗示的那样,它不是“官方的”(不必在非 Sun/Oracle 实现上工作)。我在Java 7上查了一下,不知道什么时候推出的。

关于java - 如何获取运行桌面应用程序的 JAR 的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4114702/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com