Java jar 无法访问资源
Java jar can't access resources
我需要执行一个 jar 文件,它使用位于某些子文件夹中的一些文件。
例如目录树可以是这样的:
jar_root/
├── executable.jar
├── folder1/
│ └── required_file1.txt
│
├── folder2/
│ └── required_file2.txt
│
├── other_folder/
│ └── ...
└── other_file.txt
在此示例中 executable.jar
需要访问 required_file1
和 required_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>
另一种方法是通过绝对路径或相对于类路径而不是文件系统路径来引用文件。
我需要执行一个 jar 文件,它使用位于某些子文件夹中的一些文件。
例如目录树可以是这样的:
jar_root/
├── executable.jar
├── folder1/
│ └── required_file1.txt
│
├── folder2/
│ └── required_file2.txt
│
├── other_folder/
│ └── ...
└── other_file.txt
在此示例中 executable.jar
需要访问 required_file1
和 required_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>
另一种方法是通过绝对路径或相对于类路径而不是文件系统路径来引用文件。