Java + Linux:工作目录是我的主文件夹

时间:2010-11-11 17:34:26

标签: java linux nautilus working-directory

很多人都有这样的问题:当他们从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

这是一个非常糟糕的主意,因为我们经常使用相对路径来配置文件。这样,它们将无法找到,因为文件指向homefolder。

2 个答案:

答案 0 :(得分:3)

基本上无法保证当前的工作目录。

然而,你可以做的是向JVM询问它找到给定类的字节代码的URL(你知道放在哪里),并使用它来“找到”它的“下一步”。< / p>

请参阅Determine location of a java class loaded by Matlab

答案 1 :(得分:0)

我提出这个问题是因为我想分享我自己的解决方案。我写了一个小C ++应用程序,你必须放在/usr/bin

应用程序的代码可以看到here(PASTEBIN) 应用程序本身可以下载here(我自己的FTP)或MegaUpload

所以,把它放在/usr/bin打开一个终端然后输入:

sudo cp java-jar-launch /usr/bin/
[enter your password]

然后浏览Nautilus到你的一个Jar文件,选择并单击它,然后选择
“打开用”。然后选择自定义命令并键入java-jar-launch。不要忘记选中复选框以记住Java-JAR类型。按确定并关闭。

完成。
如果您在Nautilus中双击一个Jar文件,它将使用我的应用程序打开,该应用程序会调用java 正确的工作目录。