我无法解决这个问题,而且我几乎尝试过所有事情。
我希望我的程序从Jar File中读取两个资源,并且它将通过eclipse正常运行。但是,当我从命令提示符运行jar时,它会给出nullpointer异常。
结构:
的src /主/爪哇/ App.java
的src /主/资源/属性/ application.properties
的src /主/资源/弹簧/ applicationContext.xml的
代码:
阅读application.properties
properties.load(App.class.getResourceAsStream( “/属性/ application.properties”));
阅读applicationContext.xml
context = new ClassPathXmlApplicationContext(“/ spring / applicationContext.xml”);
错误:
加载时出错 application.properties java.lang.NullPointerException
我可能做错了什么?
答案 0 :(得分:0)
在你的结构中显示.java的位置,但你错过了.class。它所在的路径是类加载器将使用的路径。应该有你的资源
编辑:澄清一下。在你的帖子中,你提到了App.java的路径。但是类加载器只关心App.class,所以假设你有\src
|...(App.java and whatever, these will be ignored)
\bin
|
|--App.class
|
\bin\resources\...(properties and whatever, these will be read)
你应该确保bin下有属性和spring目录。 如果你在src中只有.java,那么类加载器将忽略它。
答案 1 :(得分:0)
假设这些文件位于运行时类路径上可用的jar文件中,第一个getResourceAsStream()
示例可能会失败,因为您尚未指定jar文件中的完整路径。 (另外,一个常见的失败是它离开领先/,但你似乎没关系。)例如:
properties.load(App.class.getResourceAsStream("/src/main/resources/properties/application.properties"));
但是,如果您不确定在构建的jar文件中文件的位置(路径),请尝试
jar -tvf <your-jar>.jar
看看它究竟是什么。
无法对ClassPathXmlApplicationContext
发表评论;不是Spring开发者。