很多人都有这样的问题:当他们从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。
答案 0 :(得分:3)
基本上无法保证当前的工作目录。
然而,你可以做的是向JVM询问它找到给定类的字节代码的URL(你知道放在哪里),并使用它来“找到”它的“下一步”。< / p>
答案 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
正确的工作目录。