2014-07-07 101 views
1

我有一个名为lib的文件夹,其中包含我所有的Jar文件,并且在其中一个Jar文件类中,我有一个由批处理文件调用的主要方法。在与我的lib相同的文件夹位置,我有另一个文件夹结构路径/ to/a/resource/myresource.txt加载Jar外部的文件

如何从Jar文件中的类加载此文件?我尝试了以下,并且都导致null:

getClass().getResource("path/to/a/resource/myresource.txt") 
getClass().getClassLoader().getResource("path/to/a/resource/myresource.txt") 

任何想法?即使有绝对路径,它也失败了!有什么建议么?

+1

使用'FileReader'来做到这一点。 – Jens

+0

您是否更新了jar清单中的Class-Path条目? – JamesB

回答

0

您尝试过的两件事是用于从类路径读取文件,因为此文件夹不在您的类路径中,您可以使用任何java文件IO类直接读取它。

0
File file = new File("C:/folder/myFile.txt"); 

,或者如果你知道的相对路径:

File file = new File("../../path/myFile.txt"); 
0

您可以从文件系统加载的文件

new FileReader(relativeOrAbsoluteFilesystemLocation) 

,或者您可以在问题中添加目录到类路径:

java -cp "lib/*;lib" ... 

然后使用您的原始方法。

(UNIX使用:而非;的类路径分隔符)