springBoot项目打成jar包给其他项目引用,读取jar里面的资源文件失败
发布日期:2021-07-20 20:54:07
浏览次数:28
分类:技术文章
本文共 2247 字,大约阅读时间需要 7 分钟。
读取项目中的xml文件
代码:
SAXReader reader = new SAXReader(); Document document = reader.read(ResourceUtils.getFile("classpath:application-validation.xml")); Element root = document.getRootElement();
但是抛出 FileNotFound异常
java.io.FileNotFoundException: class path resource [application-validation.xml] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/usr/local/conet/cloud/conet-ds/DS_V200R002B020.jar!/BOOT-INF/classes!/application-validation.xml at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:217) at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:180) at com.validation.ValidationConfigParser.parse(ValidationConfigParser.java:39) at com.validation.runner.ValidationRunner.run(ValidationRunner.java:28) at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:797) at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:781) at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) at com.ds.ConetDsApplication.main(ConetDsApplication.java:26) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
原因:
项目打成jar包后,资源文件也存在于jar包中,文件的绝对路径是jar:file:/D:/sunmnet/JetBrains/workspace/xxx/target/xxx-1.0-SNAPSHOT.jar!/BOOT-INF/classes!/XXX.cfg
但在运行过程中,spring是不允许直接访问jar包内的文件的,所以会报错。
解决:
采用读取流的方式访问文件:
ClassPathResource resource = new ClassPathResource("application-validation.xml"); InputStream inputStream = resource.getInputStream(); Document document = reader.read(inputStream); Element root = document.getRootElement();
转载地址:https://blog.csdn.net/liao0801_123/article/details/90639334 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月08日 02时48分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JWT(JSON Web Token)认证小结
2019-04-26
Poj百练 2746:约瑟夫问题 (分类:模拟)
2019-04-26
git知识点梳理
2019-04-26
git中tag标签的用法
2019-04-26
VTK:文字来源TextOrigin
2019-04-26
VTK:XYPlot图
2019-04-26
VTK:检查模块CheckForModule
2019-04-26
VTK:复合数据之CompositePolyDataMapper
2019-04-26
VTK:复合数据之Generate2DAMRDataSetWithPulse
2019-04-26
VTK:复合数据之Generate3DAMRDataSetWithPulse
2019-04-26
VTK:复合数据之MultiBlockDataSet
2019-04-26
VTK:复合数据之OverlappingAMR
2019-04-26
VTK:数据结构之BuildLocatorFromKClosestPoints
2019-04-26
VTK:数据结构之BuildOctree
2019-04-26
VTK:数据结构之ClosestNPoints
2019-04-26
IDEA SpringMVC Tomcat 404 一网打尽 及路径问题汇总【踩坑记录】
2019-04-26
boost::bad_function_call用法的测试程序
2019-04-26