Java获取资源InvalidJarIndexException

标签 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") 有效。可能是什么原因?

最佳答案

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/

相关文章:

java - 应用程序在执行按钮单击时关闭 - 与我的本地 XAMPP 服务器的服务器连接

java - 三向快速排序,问题

java - log4j 的示例 xml 配置,有一个 'main' java 应用程序并且想要写入文件

log4j - 从我的 Java EE 应用程序记录日志

hadoop - hadoop日志文件夹中的.out文件是什么?删除它们安全吗?

java - 如何自定义我的 log4j2.xml 参数

java - 与 Jackrabbit 聚类

Java:如何从 System.console() 获取输入

java - JDK 11+ 和 Javadoc

grails - Grails将所有日志记录到一个文件