2013-05-11 84 views
0

我看了几个文件有:Maven的:可执行的JAR文件未找到资源

new File(Thread.currentThread().getContextClassLoader().getResource("Configuration.txt")).getFile()); 

的正常工作为构建项目和MVN测试,但只要我试图执行的jar文件,这些电话为空。这些文件实际存在于jar中。 这里有什么可能是错的?

我POM-部分用于构建罐子(我没有relevevant依赖现在):

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
    <archive> 
     <manifest> 
     <addClasspath>true</addClasspath> 
     <mainClass>path.to.mainclass</mainClass> 
     </manifest> 
    </archive> 
    </configuration> 
</plugin> 

资源文件是在标准文件夹的src/main /资源

+0

是Jar根目录下的文件,还是与类相同的包? – rubixibuc 2013-05-11 09:21:40

+0

资源文件位于标准文件夹src/main/resources中 – user2368505 2013-05-11 09:42:43

回答

0

当您使用mvn test或从IDE运行测试从文件系统访问物理文件,但是当您使用带有打包资源的运行jar时,不能使用File类或getFile()方法。您应该使用getClass().getResource()致电或getClass().getResourceAsStream()

+0

好吧,那我该如何列出资源目录中的文件,以及如何写入通过getResourceAsStream()读取的文件? – user2368505 2013-05-11 11:25:46

+0

你不应该在你的类路径中将文件写入jar文件(尽管在某些情况下你可以做到这一点)。您不应该尝试从类路径中的jar文件中列出条目。这些是Java平台的规则。请记住,jar文件不是存储代码和资源的唯一方法。 – 2013-05-11 13:33:42

+0

谢谢,什么是可重新命名而不是.jar文件?想到使用izPack,这是一个好主意吗? – user2368505 2013-05-11 15:39:03

相关问题