[英]Java + Linux: Working Directory is my home folder
许多人遇到的问题是,当他们从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,因此将找不到它们。
基本上,不能保证当前的工作目录如何。
但是,您可以做的是向JVM询问有关URL的信息,该URL在哪里找到给定类的字节码(您知道将其放在何处),并使用该URL查找“下一个”资源。
我编写了一个微型C ++应用程序,该应用程序充当包装器,该包装器首先设置了工作目录。 该应用程序的代码可以在pastebin上找到。 编译它并移至/usr/bin/java-jar-launch
。
然后,在Nautilus中,浏览到您的JAR文件之一,选择并单击右键,然后选择“打开方式”。 然后选择自定义命令并输入java-jar-launch
。 不要忘记选中复选框以记住它的Java JAR类型。 按确定并关闭。
如果您在Nautilus中双击一个JAR文件,它将用我的应用程序打开,该应用程序将使用正确的工作目录调用java
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.