我在 Maven 项目的 src/main/resource 文件夹中有 download.sh 文件,我正在通过下面的代码阅读它
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("download.sh").getFile());
当我将其作为独立应用程序运行时,该文件正在读取。
如果我使用 jar ex 将其作为应用程序运行:-
java -jar runScript.jar SCHEMA_NAME
/Users/IdeaProjects/RunScript/target/file:/Users/IdeaProjects/RunScript/target/RunScripts.jar!/download.sh": error=2,没有这样的文件或目录
任何人都可以帮助我在使用 jar 执行时从资源中读取文件
最佳答案
我认为当您尝试读取该文件时会发生此错误。这是因为 jar 中的资源不是文件而是流。所以你应该使用
getClass().getResourceAsStream("download.sh");
然后读取该流,例如:
InputStream resourceStream = getClass().getResourceAsStream("download.sh")
BufferedReader br = new BufferedReader(new InputStreamReader(resourceStream));
String line;
while ((line = br.readLine()) != null) {
// do something
System.out.println(line);
}
关于java - 使用 java jar 从资源文件夹加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47917335/