【发布时间】:2010-11-11 17:34:26
【问题描述】:
很多人有这样的问题,当他们从 nautilus 启动 JAR 应用程序时,CWD(当前工作目录)设置为他们的主文件夹(而不是 JAR 所在的文件夹)。这是 Nautilus 中的一个错误,尤其是 Linux。
如果您知道一个技巧,可以更轻松地正确启动 Jar,而不是打开终端并在其中手动输入 java -jar myJar.jar,请在下面发布。
谢谢
问题的简短代码示例:
File f = new File("ASimpleTextFile.txt");
System.out.println(f.getAbsolutePath());
在 Windows 中,这会打印:[The Path To The Jar]/ASimpleTextFile.txt
但在 Linux 中,它会打印:/home/[yourName]/ASimpleTextFile.txt
这是一个非常糟糕的主意,因为我们经常使用配置文件的相对路径。这样就找不到了,因为文件指向主文件夹。
【问题讨论】:
-
您的 Java 程序以何种方式使用当前目录?你甚至不能在 Java 中做
chdir,所以,你的程序应该是 cwd-agnostic。 -
@Chris:一点也不真实;我经常使用当前目录写入数据,要求用户将应用程序设置为将当前目录放在他们想要写入数据的位置。
-
@Software Monkey:当您的应用程序是命令行应用程序时,这是一种明智的做法。但是对于 UI 应用程序,不应该依赖于当前目录(可能作为文件打开对话框或类似内容的默认位置除外)。
标签: java linux nautilus working-directory