1

我用以下代码编写了一个简单的 java 应用程序:

String currentDir = new java.io.File(".").getCanonicalPath();
javax.swing.JOptionPane.showMessageDialog(null, currentDir); //This line shows a graphical dialog with the current dir

当我通过终端运行它时,它会为我提供 jar 文件所在的目录。但是当我使用 GUI 文件管理器运行它时(即右键单击 jar 文件 -> 打开方式 -> OpenJDK Java 7 运行时) - 工作目录是我的用户主目录(/home/angstrem)。如何将工作目录设置为 jar 文件所在的目录?

4

2 回答 2

1

你可以这样做:

String jarPath = YourClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();

替换YourClass为您的 jar 中定义的实际类。

然后,您可以使您的文件路径相对于jarPath,并且您的程序无论其工作目录如何都可以正常工作。

于 2013-02-10T23:05:00.363 回答
0

你不能,也不应该能。例如考虑多线程。您只能使您的应用程序对当前路径不敏感。

于 2013-02-10T23:08:06.837 回答