如何为Java应用程序设置工作目录?

时间:2013-02-10 22:57:39

标签: java filesystems

我写了一个简单的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文件所在的目录?

2 个答案:

答案 0 :(得分:1)

你可以这样做:

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

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

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

答案 1 :(得分:0)

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