我的eclipse项目中有server.XML文件,从eclipse执行时,工作正常。
但是当我使用 包所有文件 选项创建可执行jar时,它无法访问该XML文件,即使它存在于 resource < jar中的/ em> 文件夹。
为什么会这样? 怎么做?
我通过这种方式访问XML文件:
private void initializeDocument()
{
try {
docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilder = docBuilderFactory.newDocumentBuilder();
/*
URL xmlResource = getClass().getResource("/server.xml");
File xmlFile = new File(xmlResource.getPath());
*/
//
document = docBuilder.parse (new File("ServerResources/server.xml"));
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:4)
你的问题就在这一行:
File xmlFile = new File(xmlResource.getPath());
JAR 中的资源不是文件。
相反,您必须使用getClass().getResourceAsStream()
并在该流中使用DocumentBuilder
。
答案 1 :(得分:-1)
试试这段代码......
让我知道它是否有效......
String fileURI = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
fileURI = fileURI.substring(0, fileURI.length()-4);
fileURI = fileURI+"ServerResources/server.xml";
String actualFileURI= URLDecoder.decode(fileURI);
document = docBuilder.parse (new File(actualFileURI));