无法从Jar文件中读取资源

时间:2014-04-22 16:10:32

标签: java jar

我无法解决这个问题,而且我几乎尝试过所有事情。

我希望我的程序从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

我可能做错了什么?

2 个答案:

答案 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开发者。