最近發現一個問題,有時候對一個Android項目反復的Add jar和remove jar,發現編譯可以通過,但是運行起來當應用到外部jar的對象時,會拋出java.lang.NoClassDefFoundError異常。導致程序奔潰。
查看項目屬性,發現java build path裡比正常的項目少了Android Dependencies這一項:
通過和丟失之前的項目進行比對,發現差別在於工程根目錄下的.classpath文件,<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>這裡的exported變成了false,於是把這裡改回true,然後重新關閉和打開工程,發現就ok了。
另外如果你導入的jar包不是放在工程目錄的\libs目錄下,也會有這個問題,請把jar包放到\libs目錄下,否則雖然能編譯通過,但是因為打包的時候沒有把jar打包進去,所以導致上面的那個異常。Eclipse在編譯的時候會自動把\libs目錄下的文件打包進去。
這個問題以前沒怎麼出現過,不知道是不是和Eclipse版本和ADT版本有關系。