问题描述:
启动java jar包时,报jar包指定路径下的文件不存在,而文件事实上是存在的
报错代码:
Resource resource = new ClassPathResource("static/test.json");
File file = resource.getFile(); // 该行拿不到jar包内resources目录下的文件
FileInputStream fis = new FileInputStream(file);
正常运行代码:
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import java.io.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
Resource resource = new ClassPathResource("static/test.json");
InputStream is = resource.getInputStream(); // 文件在jar包中时,需要通过流来获取文件内容
Reader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
Stream<String> lines = br.lines();
System.out.println(lines.collect(Collectors.joining()));
博客讨论了在Java中启动jar包时遇到的一个问题,即尝试通过`ClassPathResource`获取jar内资源文件失败。作者指出,当文件在jar包内时,应该使用`getInputStream()`而不是`getFile()`来读取文件内容,并提供了修正后的代码示例。该问题涉及到Java开发中的资源加载和流操作。
1万+

被折叠的 条评论
为什么被折叠?



