我在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,没有这样的文件或目录 < / p>
使用jar
执行时,任何人都可以帮助我从资源中读取文件答案 0 :(得分: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);
}
答案 1 :(得分:0)
我认为你没有把你的资源与你的jar包装在一起。请使用
验证您的jar包含资源文件(download.sh)jar -tvf <yourfile.jar> | grep -i download
答案 2 :(得分:0)
资源是不是文件。您可以获取其URL或输入流,但您无法执行任何操作会将JAR文件中的资源转换为可用于def k_sequence(seq, k):
pointers = [0] * k
while True:
yield tuple(seq[i] for i in pointers)
p = 0
pointers[p] += 1
while pointers[p] == len(seq):
pointers[p] = 0
p += 1
if p == len(seq):
return
pointers[p] += 1
for combo in k_sequence([1,2,3], 3):
print(combo)
的磁盘上的文件。没有解压缩JAR文件,即。