почему xml-файл не работает с исполняемым файлом le jar - PullRequest
0 голосов
/ 21 марта 2012

В моем проекте eclipse есть файл server.XML, который при выполнении из eclipse работает нормально.

Но когда я создаю исполняемый jar-файл, используя , упаковываю все файлы , он не может получить доступ к этому XML-файлу, даже если он присутствует в ресурсе папка в банке.

Почему это происходит? Как это сделать?

Я обращаюсь к 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 ]

4 голосов
/ 21 марта 2012

Ваша проблема в этой строке:

File xmlFile = new File(xmlResource.getPath());

Ресурс внутри JAR не является файлом .

Вместо этого вы должны использовать getClass().getResourceAsStream() и использовать DocumentBuilder с этим потоком.

0 голосов
/ 21 марта 2012

попробуйте этот фрагмент кода ...

дайте мне знать, если это работает ...

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