我正在尝试从部署到dm-server的jar文件中读取xml配置
这是代码
Reader fileReader = null;
try {
fileReader = new FileReader("test.xml");
} catch (FileNotFoundException fnfex) {
fnfex.printStackTrace();
} catch (IOException ioex) {
ioex.printStackTrace();
}
如果我只是用jar而不是dm-server写一个junit测试,我就能读懂它。
测试被打包到jar中,并且是jar文件的根目录。
请帮助!!!!
感谢, 甲
答案 0 :(得分:4)
ClassLoader.getResourceAsStream()将允许您从.jar文件中读取资源。如果您的文件位于.jar文件的根目录,则:
this.getClass().getClassLoader().getResourceAsStream("/test.xml");
将从该文件中为您提供一个InputStream。
答案 1 :(得分:4)
您需要使用Class的getResource
或getResourceAsStream
方法从jar中读取文件。
这可以这样做:
Reader fileReader = null;
InputStream is = this.getClass().getResourceAsStream("/test.xml");
if (null != is) {
fileReader = new InputStreamReader(is);
}
请注意,getResourceAsStream
如果找不到文件,则返回null。
编辑: 将test.xml更正为/test.xml
另请注意,getResourceAsStream
Class<T>
版ClassLoader
版适用于{{1}}的{{3}}或getResourceAsStream
。