我在同一个文件夹中有一个类名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”)有效。可能是什么原因?
答案 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")
可能会解决您的问题。