Java获取资源InvalidJarIndexException

时间:2011-09-28 10:36:25

标签: java log4j

我在同一个文件夹中有一个类名test.java和另一个文件“log4j.properties”,但是在调用之后

getClass().getResource("log4j.properties")

失败
ms
Trace:
sun.misc.InvalidJarIndexException: Invalid index
    at sun.misc.URLClassPath$JarLoader.getResource(Unknown Source)
    at sun.misc.URLClassPath$JarLoader.getResource(Unknown Source)
    at sun.misc.URLClassPath$JarLoader.findResource(Unknown Source)
    at sun.misc.URLClassPath.findResource(Unknown Source)
    at java.net.URLClassLoader$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findResource(Unknown Source)
    at java.lang.ClassLoader.getResource(Unknown Source)
    at java.lang.ClassLoader.getResource(Unknown Source)
    at java.lang.Class.getResource(Unknown Source)

但getClass()。getClassLoader()。getResource(“log4j.properties”)有效。可能是什么原因?

1 个答案:

答案 0 :(得分:1)

InvalidJarIndexException通常是由JAR中损坏的INDEX.LIST文件引起的。所以检查JAR是否有任何问题。见http://littletechsecrets.wordpress.com/2008/12/01/why-does-invalidjarindexexception-occur/

您描述的不同结果可能与Class.getResource()解析相对于类包的路径有关,而ClassLoader.getResource()解析相对于根的路径。因此getClass().getResource("/log4j.properties")可能会解决您的问题。