Java 中 Ubuntu 服务器上的路径?



我刚刚用java做了一个小项目,将.jar和application.properties打包到我的VPS中,并想在那里进行测试。该工具读取日志文件。

我在应用程序中指定了日志文件的路径。属性,如下所示:

LOGPATH=/folder1/folder2/logs/thelogIwant.log

路径解析如下:

public String makePath(String path) {

Properties prop = new Properties();
InputStream input = null;

try {
input = new FileInputStream("application.properties");
prop.load(input);

} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return  prop.getProperty(path);
}
Path logFile = Paths.get(makePath("LOGPATH"));

它甚至似乎对右,正如错误消息所述:

SEVERE: /folder1/folder2/logs/thelogIwant.log (No such file or directory)

日志文件由另一个应用程序创建,因此位于我正在运行的.jar以外的另一个目录中。

该路径存在于我的VPS上,我可以导航到它并穿过它。 有人可以指出我正确的方向吗?这里出了什么问题?

我尝试过的事情:

  1. 使用"~/文件夹1/..." 指定路径
  2. 使用"文件夹 1/..." 指定路径

我可以想到一些可能的解释:

  1. 配置文件中的路径名是错误的;例如,有一个拼写错误或其他一些你没有注意到的差异。
  2. 您正在加载的属性文件与您认为的属性文件不同。
  3. 文件中的属性名称与工具使用的名称不匹配。
  4. 其他应用程序未创建日志文件
  5. 权限:您的工具可能以不允许读取路径上的某个目录的用户身份运行。
  6. 强制模式下的 SELinux 可以阻止应用程序(例如作为服务运行)访问文件。
  7. 同形文字,可以是属性文件1、源代码或文件系统中的文件名。

你尝试过的事情不太可能奏效。 正确的绝对路径名比相对路径名更健壮Paths.get不知道如何处理~。 (~的扩展是一个外壳功能...


我会试试这个:

  • 修改您的工具以输出"LOGPATH"属性的值...括在引号字符中,以便您可以在值的开头/结尾看到任何虚假的空格字符。
  • 运行该工具。
  • 使用
  • 复制和粘贴,查看是否可以完全使用工具使用的路径名打开文件。

简而言之,验证您实际使用的路径名是否是您期望的路径名。


1 - 实际上,经典格式属性文件以 LATIN-1 编码,因此这是不可能的。

我能够解决这个问题,谢谢@Steven你的帮助!

当文件所在的目录中时,我使用了 pwd 命令,并认识到真正的绝对路径以/home/myusername/folder1/...

现在工作正常。

相关内容

  • 没有找到相关文章

最新更新