为什么xml文件不能与可执行文件一起使用

时间:2012-03-21 09:54:58

标签: java eclipse executable-jar

我的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();
    }



}

2 个答案:

答案 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));