为什么URL在尝试获取Jar内的资源时返回null?

时间:2014-10-24 21:08:32

标签: java file url jar nullpointerexception

我有这个Jar文件..

core.jar

META-INF/...
com/...
config
  myLog4j.xml
schema

尝试阅读/加载的班级位于com/my/company/MyLogging.class

代码就是这样,在MyLogging类中:

URL myUrl = MyLogging.class.getResource("/config/myLog4j.xml");

myUrlnull。它没有返回资源/文件。

修改:包含路径图片。

enter image description here

tar输出:

     0 Fri Oct 24 16:15:10 CDT 2014 META-INF/
   122 Fri Oct 24 16:15:08 CDT 2014 META-INF/MANIFEST.MF
     0 Wed Oct 22 16:40:26 CDT 2014 com/
     0 Wed Oct 22 16:40:26 CDT 2014 com/my/company/..
     .....
     0 Wed Oct 08 11:20:42 CDT 2014 config/
     0 Wed Oct 08 11:20:42 CDT 2014 config/email/
     0 Wed Oct 08 11:20:44 CDT 2014 schema/
     0 Wed Oct 08 11:20:42 CDT 2014 schema/alliance/
     0 Wed Oct 08 11:20:44 CDT 2014 schema/tibco/
  7972 Fri Oct 24 16:15:08 CDT 2014 com/my/company/MyLogging.class
  2045 Wed Oct 08 11:20:42 CDT 2014 config/myLog4j.xml
   400 Wed Oct 08 11:20:42 CDT 2014 config/email/bodyDashtemp.st
  1583 Wed Oct 08 11:20:42 CDT 2014 schema/Castor-XMLJavaScript.txt
 18958 Wed Oct 08 11:20:44 CDT 2014 schema/tibco/TIBCO_EventSchema.xsd

编辑:

我是从命令行运行的。 JUnit测试。

修改:更多信息...

这个(core.jar)是一个依赖Jar文件。它包含在JUnit测试类文件的类路径中。

MyLogging.class用于正在进行单元测试的类中。我作为单元测试的类实际上是一个Struts2动作类。它是一个单元测试而不是集成测试。意思是,此动作类被视为常规类而不是Action类。

修改

Manifest.mf内容:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.4
Created-By: pwa6460_26sr7ifx-20131203_01 (SR7) (IBM Corporation)

1 个答案:

答案 0 :(得分:0)

还有另一个.jar包含加载了MyLogging.class的{​​{1}}。因为类加载器只能加载一次类,所以使用第一个MyLogging.class,它的jar没有资源。