Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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 Class.getResource在Eclipse中作为独立的exe返回不正确的路径_Java_Eclipse_Jar_Executable Jar - Fatal编程技术网

Java Class.getResource在Eclipse中作为独立的exe返回不正确的路径

Java Class.getResource在Eclipse中作为独立的exe返回不正确的路径,java,eclipse,jar,executable-jar,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().erro

我有一个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时:。。如何使其一致

编辑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

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


您可以使用
getResourceAsStream()
?这样,您就不必处理如何打开它进行阅读。

您没有发现任何错误。它没有说“URL解析”+xmlFileName)。我还建议不要在日志中丢失异常e。@shikjohari不,我在日志中没有看到任何异常。这里没有任何错误
getResource
用于从.jar文件中加载一个文件,这正是它在这里所做的。在Eclipse中运行时,它只需将代码编译成
.class
文件,将所有内容放入/bin文件夹中并启动应用程序,而不是将所有内容包装在.jar文件中。这就是为什么在这种情况下路径不是相对的。向我们展示更多代码。您正在尝试将URL视为文件吗?从jar加载的资源不是文件。实际上,它从类路径读取资源。它是否在jar中取决于应用程序的部署和配置方式