我正在使用 Swing 开发一个小型 Java 应用程序,它应该在 Windows/Linux 和 MacOS 上运行。
最终它将作为一个可运行的 jar 发布,其中一些配置文件位于同一文件夹中。要加载它们,我需要 jar 存储在程序中的文件夹的路径。
已经有几个类似这个或这个的线程。
我的问题是,当我从 eclipse 中运行程序或从终端调用可运行 jar 时,那里讨论的所有解决方案都可以正常工作,如下所示:
java -jar /path/to/jar/jarfile.jar
但是,当我单击 Cinnamon 或 Gnome 中的 jar 文件时(大多数用户都知道这样做),我没有得到正确的路径。(MacOS 用户报告同样的问题)
这是我到目前为止尝试过的以及通过双击运行时的输出(所有这些在从 Eclipse 或终端运行时都显示所需的路径):
ClassLoader.getSystemClassLoader().getResource(".").getPath()
Output: file:/usr/lib/jvm/java-6-openjdk-common/jre/lib/ext/pulse-java.jar!/
SomeClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();
Output: ./
System.getProperty("user.dir");
Output: /home/myusername
有没有其他方法可以做到这一点,或者我在导出 jar 时做错了什么?任何帮助,将不胜感激!
干杯尼克