Java获取资源InvalidJarIndexException

发布于 2024-12-07 09:20:36 字数 912 浏览 0 评论 0原文

我在同一文件夹中有一个类名 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") 有效。可能是什么原因?

I have a class names test.java and another file "log4j.properties" in the same folder but following call

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

fails with

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)

But getClass().getClassLoader().getResource("log4j.properties") works. What can be the reason?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奈何桥上唱咆哮 2024-12-14 09:20:36

InvalidJarIndexException 通常是由 JAR 中损坏的 INDEX.LIST 文件引起的。因此,请检查 JAR 是否有任何问题。请参阅http://littletechsecrets.wordpress.com/2008/12 /01/why-does-invalidjarindexexception-occurr/

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

The InvalidJarIndexException is normally caused by a corrupt INDEX.LIST file in the JAR. So check the JAR for any problems. See http://littletechsecrets.wordpress.com/2008/12/01/why-does-invalidjarindexexception-occur/

The different results you describe are probably related to Class.getResource() resolving a path relative to the classes package, and ClassLoader.getResource() resolving a path relative to the root. So getClass().getResource("/log4j.properties") might fix your problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文