我正在尝试读取.jar文件中的初始文本文件。我试图用ClassLoader加载文件,但它没有用。奇怪的是,这种方式在Eclipse中起作用,但它并没有作为单独的可执行jar文件。
现在我将尝试重新创建这种情况:
A类:
/**
* Read initial file.
*
* @return initial file
*/
private SomeObject readInitialObject() {
String path = "object/Welcome.xml";
File f = new File(path);
Reader r = new Reader(f);
SomeObject o = r.read();
return o;
}
班级读者:
private File importedFile;
public void read() {
...
DocumentBuilderFactory dbFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(FileLoader.load(importedFile.
getPath()));
}
类FileLoader
/**
* Load input stream.
*
* @param path file path
* @return input stream
*/
public static InputStream load(final String path) {
InputStream input = FileLoader.class.getResourceAsStream(path);
if (input == null) {
input = FileLoader.class.getResourceAsStream("/" + path);
}
return input;
}
我很感激收到你的建议。谢谢!
答案 0 :(得分:1)
请查看Distributed jar file not picking up my .txt file示例。
您需要指定相对于您使用{/ 1}}
的班级的路径答案 1 :(得分:0)
在jar文件中,文件结构与实际结构略有不同。您可以打开下巴以查看文件的确切路径。 另请参阅http://docs.oracle.com/javase/tutorial/deployment/jar/build.html
答案 2 :(得分:0)
问题可能是Windows不区分大小写,但在jar中文件名区分大小写(如在Linux上)。进一步不使用文件,因为你使用/
而不是\
。
所以我认为实际的文件还有其他一些情况。
答案 3 :(得分:-1)
打开你的jar文件,看你是否有导出的文件! - 如果没有 - >再次将项目导出到jar文件,然后选择要导出的文件 - 是的 - >检查文件的路径