Java + Linux : Working Directory is my home folder

标签 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 中,打印:[Jar 的路径]/ASimpleTextFile.txt
但在 Linux 中,它打印: /home/[yourName]/ASimpleTextFile.txt

这是一个非常糟糕的想法,因为我们经常使用配置文件的相对路径。这样,它们就不会被发现,因为文件指向主文件夹。

最佳答案

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

但是,您可以做的是向 JVM 询问它在哪里找到给定类的字节码(您知道它放在哪里)的 URL,并使用它来定位它“旁边”的其他资源。

参见Determine location of a java class loaded by Matlab

关于Java + Linux : Working Directory is my home folder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4157358/

相关文章:

java - 自定义注解、可插拔注解处理和AOP(面向方面​​编程)之间的根本区别是什么?

java - getText().toString() 常量和资源类型不匹配

找不到 C 中 malloc() 和 calloc() 之间的区别(从虚拟机 Linux 运行)

linux - Unix 命令通过根据条件组合 2 个文件来创建新的输出文件

ubuntu - 在新的 Ubuntu 14.04.3 : Permission Denied 上共享文件夹

python - 使用 python 在 nautilus 扩展中使用 gtk

java - Java图形中如何使透明度透明?

java - MVC复杂业务逻辑职责

regex - 无法将否定先行断言应用于 bash 上的 nagios 插件输出