gpt4 book ai didi

linux - 如何找到正在运行的jar文件的路径

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:01:53 26 4
gpt4 key购买 nike

我正在尝试以编程方式查找正在运行的 jar 文件的完整路径。我知道还有很多其他问题,但似乎没有一个对我有用——最值得注意的是,我偶然发现了

MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().g­etPath()

多次。在 Eclipse 中调试时,该特定方法适用于我,但一旦我编译为 jar,它就会返回 NullPointerException。其他方法编译后也遇到了类似的问题。

我有一个使用 java.class.path 的临时解决方法,但是当我从 GUI 执行 jar 时,它只返回完整路径 - 在终端中,它失败了。

我还应该注意到,我遇到此问题的唯一系统是 Linux。在 Windows 和 Mac 上,我没有遇到任何问题。

任何帮助将不胜感激:)

谢谢!

德里克

编辑:jar 是可执行的,如果有任何改变的话。

最佳答案

你做不到。没有要求 ClassLoader 支持这一点,而且大多数都不支持。

或者,也许这个公式会更有帮助。二进制类通过 ClassLoader 对象进入 JVM。 ClassLoader 对象不需要跟踪它们加载的类的来源。他们可以从任何地方加载它们: jar 、网络、数据库、旧锡 jar 。

因此,如果您想始终了解应用程序中类的出处,则必须始终使用类加载器加载代码,该类加载器确实以对您有用的方式跟踪出处。

如果您控制整个应用程序,就可以做到这一点。

如果您不控制整个应用程序,而是谈论将任意 jar 加载到任意应用程序中的任意类加载器中,则不能依赖于了解它的位置。

关于linux - 如何找到正在运行的jar文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5688344/

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