我有一个名为lib的文件夹,其中包含我的所有Jar文件,在一个Jar文件类中,我有一个由批处理文件调用的main方法。在与我的lib相同的文件夹位置,我有另一个文件夹结构路径/到/ a / resource / myresource.txt
如何从Jar文件中的类加载此文件?我尝试了以下操作,结果都是null:
getClass().getResource("path/to/a/resource/myresource.txt")
getClass().getClassLoader().getResource("path/to/a/resource/myresource.txt")
有什么想法吗?即使有绝对的路径,也失败了!有什么建议吗?
答案 0 :(得分:1)
您可以使用:
getClass().getResourceAsStream("path/to/a/resource/myresource.txt")
但是,为了实现这一目标,您需要添加路径'。'到JAR的MANIFEST.MF文件的Class-Path条目。
http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html
答案 1 :(得分:0)
您尝试过的两件事用于从类路径中读取文件,因为此文件夹不在您的类路径中,您可以使用任何java文件IO类直接读取它。
答案 2 :(得分:0)
File file = new File("C:/folder/myFile.txt");
或者如果你知道相对路径:
File file = new File("../../path/myFile.txt");
答案 3 :(得分:0)
答案 4 :(得分:0)
您可以从文件系统加载文件
new FileReader(relativeOrAbsoluteFilesystemLocation)
或者您可以将相关目录添加到类路径中:
java -cp "lib/*;lib" ...
然后使用您的原始方法。
(Unix使用:
而不是;
作为类路径分隔符)