【发布时间】:2013-03-29 21:43:37
【问题描述】:
我正在尝试读取 .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()));
}
类文件加载器
/**
* 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;
}
如果能收到您的建议,我将不胜感激。谢谢!
【问题讨论】:
-
我认为您的路径中缺少 slas:stackoverflow.com/questions/2552793/…
-
@matheszabi 我不这么认为。
-
对象目录中的 Welcome.xml 是否存在于您的 jar 中?你得到的确切错误是什么?
-
@Puce 是的,它在对象目录中。错误信息:InputStream 不能为空。
-
您能检查importedFile.getPath() 返回的内容吗? object/Welcome.xml 还是 object\Welcome.xml?
标签: java