2015-02-05 58 views
0

如果我在eclipse中运行下面的代码,我的程序编译时没有问题。如果我尝试将程序导出为可运行的jar文件,则无法找到我的资源。访问导出的jar文件时丢失的资源

public class Test { 

    public static void main(String[] args) { 

     File file = new File(Tester.class.getClassLoader().getResource("res/myFile.txt").getFile()); 

     if(!file.exists()) { System.out.println("File not found."); } 
    } 

} 

文件夹结构(通过运行jar tf test.jar):

COM/

COM /测试/

COM /测试/ Tester.class

RES/

res/myFile.txt

+0

请告诉我们您的文件夹structire。该文件包含在你的jar吗? – Jens 2015-02-05 13:11:56

+0

@Jens是该文件包含在jar中。我打开它来仔细检查。 – 2015-02-05 13:12:42

+0

,它在'res'文件夹下? – Jens 2015-02-05 13:13:27

回答

1

有没有这样的文件的jar。

改用Tester.class.getResourceAsStream("/myFile.txt"),并与流工作

UPDATE: 查看更多herehere

+0

这工作,但我不明白为什么我不能通过可执行jar使用上述方法获取文件? – 2015-02-05 13:33:03

+1

你不行。没有这样的文件。在jar文件里有一些东西,FileSystem不能访问文件的内部部分(实际上jar是一个zip文件)。但是java提供了通过reasource流访问jar文件内容的方式。 – StanislavL 2015-02-05 13:35:12