运行jar文件失败classpath下的资源文件找不到
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运行jar文件失败classpath下的资源文件找不到相关的知识,希望对你有一定的参考价值。
我弄了一个程序用到了spring配置
如下:
ApplicationContext act = new ClassPathXmlApplicationContext(
"classpath:applicationContext.xml");
maven建的项目,目录结构为:
用eclipse的时候可以直接用main方法运行
但是我用eclipse里面的export导出jar包的时候却报了spring加载配置文件失败,find not found exception
jar包结构:
求高手帮忙解答问题。
我没有用过 spring
classpath:applicationContext.xml 这个配置,
如你图中所示,放在了resources中,那么在工程中是可以运行的?
只是打包到jar 中以后找不到?
提几点猜测
resources中的配置文件,没有找包进去。
ClassPathXmlApplicationContext 这个可能不支持 jar中的使。
不知道有没有支持流的文法,如果有,你可能改成
InputStream stream = this.getClass().getResourceAsStream("/resources/spring.xml");
这样来加载,试一下。
追问可以用Resource来加载的。但即使这样写了
act = new ResourceXmlApplicationContext(new UrlResource( Thread.currentThread().getClass().getResource("/applicationContext.xml")));
还是出错
你打包以后
/applicationContext.xml
这个在顶级目录中?
不是
/resources/applicationContext.xml
这样?
你给出的信息中,好象是找不到http://www.sparingframework.org/............
这个命名空间。
"classpath:applicationContext.xml"); 这一句话, 你打包完了之后,它在load applicationContext.xml 的时候 路径变了。
实在找不到对的路径, 就把那个配置文件拿出来,hard code 写进去(仅仅 做testing)追问
没懂什么意思诶。“hard code 写进去(仅仅 做testing)”
我如果把jar包里面的资源文件取出来的话,那么,在加载spring配置的时候又会出现一些解析文件错误,什么spring schema namespace错的
你那个错误 应该是找不到对应的配置文件
把你的配置文件拿出来 放在一个写死的路径下面(c:\\...)
那恐怕
new ClassPathXmlApplicationContext("classpath:resources/applicationContext.xml");
或换成
FileSystemXmlApplicationContext
new FileSystemXmlApplicationContext("resources/applicationContext.xml");追问
刚尝试了用classpath:resources/applicationContext.xml
eclipse运行是找不到文件,
jar包运行文件是找到了,但是
这些配置文件,不应该放到子目录里面,像现在还报LOG4J也错了。
如果放子目里面,很多的配置都要另外指定。
这些不是我自己手工建的目录结构,是我用eclipse导出的时候选择了runnable jar。
不知道用什么方式打包才是正确的操作。
SpringBoot 访问不到static文件夹下的静态资源
静态资源的文件夹
"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" "/":当前项目的根路径
这里有个坑==》启动项目后访问不到静态资源,一直宝404
这是静态资源的存放位置:
此时 :
需要 maven clean,然后重启项目即可
或者ctrl+f5清除浏览器缓存,再进行访问
以上是关于运行jar文件失败classpath下的资源文件找不到的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse 工程目录下的.classpath.project文件和.settings文件作用
java自定义classloader在加载jar包和classes的时候,classloader不能找到classpath下的配置文件