我正在尝试使用 Spring 资源加载器读取文本文件,如下所示:
Resource resource = resourceLoader.getResource("classpath:\\static\\Sample.txt");
在 eclipse 中运行应用程序时它工作正常,但是当我打包应用程序然后使用 java –jar 运行它时,我得到文件未找到异常:
java.io.FileNotFoundException: class path resource [static/Sample.txt] cannot be resolved to absolute file path because it does not reside in the
file system: jar:file:/C:/workspace-test/XXX/target/XXX-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/static/Sample.txt
我解压了样本所在的 Jar 文件:XXX-0.0.1-SNAPSHOT\BOOT-INF\classes\static\Sample.txt
有人能帮助我吗 ?
提前致谢!
原文由 Greg 发布,翻译遵循 CC BY-SA 4.0 许可协议
我检查了你的代码。如果你想从 Spring Boot JAR 中的类路径加载文件,那么你必须使用
resource.getInputStream()
而不是resource.getFile()
。如果你尝试使用resource.getFile()
你会收到一个错误,因为 Spring 试图访问文件系统路径,但它不能访问你的 JAR 中的路径。详情如下:
https://smarterco.de/java-load-file-classpath-spring-boot/