我在同一文件夹中有一个类名 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") 有效。可能是什么原因?
最佳答案
InvalidJarIndexException
通常是由 JAR 中损坏的 INDEX.LIST
文件引起的。因此,请检查 JAR 是否有任何问题。请参阅http://littletechsecrets.wordpress.com/2008/12/01/why-does-invalidjarindexexception-occur/
您描述的不同结果可能与Class.getResource()
解析相对于类包的路径和ClassLoader.getResource()
解析相对于根的路径有关。因此 getClass().getResource("/log4j.properties")
可能会解决您的问题。
关于Java获取资源InvalidJarIndexException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7581903/