Java jar无法访问资源

标签 java jar filenotfoundexception

我需要执行一个 jar 文件,该文件使用位于某些子文件夹中的某些文件。

例如目录树可以是这样的:

jar_root/
├── executable.jar
├── folder1/
│    └── required_file1.txt
│
├── folder2/
│    └── required_file2.txt
│
├── other_folder/
│   └── ...
└── other_file.txt

在此示例中,executable.jar 需要访问 required_file1required_file2

我需要从另一个目录执行jar,所以我尝试了这个命令:

java -cp /path/to/jar_root/ -jar /path/to/jar_root/executable.jar <options>

但是我得到的是 required_file1 上的 FileNotFoundException (我猜 required_file2 也会引发相同的 Exception >)

如何让 jar 工作?

请注意,我无法修改 jar,因此我无法使用 getResourceAsStream,如 this 所建议的那样(和其他)答案。

最佳答案

这取决于 jar 中的代码如何尝试访问文件。如果使用相对路径,则只有从适当的工作目录启动程序才有效,例如:

cd /path/to/jar_root/ 
java -jar executable.jar <options>

另一种方法是通过绝对路径或类路径的相对路径而不是文件系统路径来引用文件。

关于Java jar无法访问资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33017145/

相关文章:

android - Android 库 JAR 可以依赖于 Android 库 AAR 吗?

java聊天程序(p2p)

java - 将 spring boot 添加到现有项目而不更改 main(args[]) 方法

java - 带有唯一字母的子字符串数

java - 使用 volley 获取 JSON 响应 - Android Studio

java - 在 jar 里找不到我的主类

java - 使用工作资源文件制作一个 jar 库

android - 如何从android目录URI获取绝对路径

java - 通常,当java返回 "The parameter is incorrect"时,这意味着什么

java - 使用文件输入流时找不到文件异常