最近發現一個問題,有時候對一個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版本有關係。