Class.getResource在Eclipse中返回错误的路径,并作为独立的exe

时间:2015-02-23 11:04:52

标签: java eclipse jar executable-jar

我有一个Java应用程序,我从类路径读取XML文件(xmlFileName),如下所示:

    URL file = null;
    // Get file from resources folder
    try {
        file = MainPanel.class.getResource("/com/adc/resources/"
                + xmlFileName);

        LoggingSample.getLogger().error(
                "File " + file); --> Debug message

    } catch (Exception e) {
        LoggingSample.getLogger().error("URL parsed " + xmlFileName);
    }

我在上面添加了调试信息。当我从eclipse中运行应用程序时,我得到了正确的localworkspace路径,并且我的应用程序成功了。然而,当我创建一个独立的jar并尝试运行它时,我的路径是错误的。请参阅log4j文件输出。

我做错了什么?任何人都可以指出。

2015-02-23 18:53:14,990 - Project - ERROR - File Path  /C:/Users/phantom.j/Documents/GitHub/sec-assess/PROJECT/bin/com/adc/resources/MetaProperty.xml
2015-02-23 18:54:26,100 - Project- ERROR - File Path  com/adc/resources/MetaProperty.xml

编辑:我添加了一些调试日志消息,看看在eclipse的情况下我将getResource作为文件:...但是当我独立时我得到rsrc:..如何使它保持一致?< / p>

编辑2 :我认为我的包装方式存在问题。当您从eclipse中导出时,您可以选择哪些选项:

a)将所需的库提取到生成的JAR

b)将生成的JAR打包所需的库

c)将所需的库复制到生成的JAR

旁边的子文件夹中

哪种方式首选?

2015-02-23 19:25:16,896 - Project - ERROR - File   file:/C:/Users/phantom.j/Documents/GitHub/sec-assess/PROJECT/bin/com/adc/resources/MetaProperty.xml
2015-02-23 19:26:23,280 - Project - ERROR - File   rsrc:com/adc/resources/MetaProperty.xml

1 个答案:

答案 0 :(得分:0)

这应该是类路径中的正确路径。从eclipse运行时,将从光盘中读取资源。当你运行jar时,它就在jar里面。问题是,如何处理URL。

你能使用getResourceAsStream()吗?那么你就不必处理如何打开它进行阅读。