我有一个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
答案 0 :(得分:0)
这应该是类路径中的正确路径。从eclipse运行时,将从光盘中读取资源。当你运行jar时,它就在jar里面。问题是,如何处理URL。
你能使用getResourceAsStream()
吗?那么你就不必处理如何打开它进行阅读。