2011-09-28 101 views
1

我有一個類名test.java並在同一文件夾中的另一個文件 「log4j.properties」,但下面的調用的Java獲得資源InvalidJarIndexException

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

InvalidJarIndexException通常是由JAR中損壞的INDEX.LIST文件引起的。所以檢查JAR是否有問題。請參閱http://littletechsecrets.wordpress.com/2008/12/01/why-does-invalidjarindexexception-occur/

您描述的不同結果可能與Class.getResource()解析相對於類包的路徑有關,並且ClassLoader.getResource()解析相對於根的路徑。所以getClass().getResource("/log4j.properties")可能會解決您的問題。

+0

我的罐子裏沒有INDEX.LIST。 Class並不是Class.getResource()應該檢查資源文件的當前包目錄嗎? – Poorna