Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么xml文件不能与可执行文件le jar一起使用_Java_Eclipse_Executable Jar - Fatal编程技术网

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

Java 为什么xml文件不能与可执行文件le jar一起使用,java,eclipse,executable-jar,Java,Eclipse,Executable Jar,我的eclipse项目中有server.XML文件,从eclipse执行时,该文件运行良好 但是,当我使用打包所有文件选项创建可执行jar时,它无法访问该XML文件,即使它存在于jar中的资源文件夹中 为什么会这样? 怎么做 我通过以下方式访问XML文件: private void initializeDocument() { try { docBuilderFactory = DocumentBuilderFactory.newInstance();

我的eclipse项目中有server.XML文件,从eclipse执行时,该文件运行良好

但是,当我使用打包所有文件选项创建可执行jar时,它无法访问该XML文件,即使它存在于jar中的资源文件夹中

为什么会这样? 怎么做

我通过以下方式访问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();
    }



}

您的问题是这一行:

File xmlFile = new File(xmlResource.getPath());
JAR中的资源不是文件


相反,您必须使用
getClass().getResourceAsStream()
ans将
DocumentBuilder
用于该流。

您的问题是这一行:

File xmlFile = new File(xmlResource.getPath());
JAR中的资源不是文件


相反,您必须使用
getClass().getResourceAsStream()
ans将
DocumentBuilder
用于该流。

试试这段代码

让我知道它是否有效

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

请尝试这段代码

让我知道它是否有效

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

您需要使用“getResourceAsStream”或类似工具将资源作为资源而不是文件打开。是否要将server.xml打包到jar文件中?您需要使用“getResourceAsStream”或类似工具将资源作为资源而不是文件打开。是否要将server.xml打包到jar文件中?要从你的罐子里取吗?