【问题标题】:Java + Linux: Working Directory is my home folderJava + Linux:工作目录是我的主文件夹
【发布时间】: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


【解决方案1】:

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

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

Determine location of a java class loaded by Matlab

【讨论】:

  • 哦,stackoverflow 现在在链接时显示 stackoverflow 问题的标题。不错!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
  • 2015-12-11
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 2014-10-09
  • 1970-01-01
相关资源
最近更新 更多