使用java jar从Resource文件夹加载文件

问题描述 投票:1回答:3

我在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执行时,任何人都可以帮助我从资源中读取文件

java maven jar maven-3
3个回答
1
投票

我认为当您尝试读取文件时会发生此错误。这是因为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);
}

0
投票

我认为你没有把你的资源与你的jar包装在一起。请验证您的jar包含资源文件(download.sh)

jar -tvf <yourfile.jar> | grep -i download 

0
投票

资源不是文件。您可以获取他们的URL或输入流,但是您可以做的任何事情都不会将JAR文件中的资源转换为可以与File一起使用的磁盘上的文件。没有解压缩JAR文件,就是这样。

© www.soinside.com 2019 - 2024. All rights reserved.