java 运行 出现选择_Eclipse 运行出现java.lang.NoClassDefFoundError的解决方法
上篇博文也提到了這個(gè)問題,但沒有深入的講解。這次特意做了整理,詳細(xì)解釋其原因。
先看錯(cuò)誤java.lang.NoClassDefFoundError,顯然是java虛擬機(jī)找不到指定的類,多數(shù)情況下是外部jar中的類。
Eclipse的自動(dòng)化,集成化,方便了我們的開發(fā),卻也迷住了我們的雙眼。遇到這個(gè)問題,我想和大多數(shù)朋友一樣,按部就班的檢查jar包,然后右鍵Builder
path,add external archives ..
在ADT17之前,如果要在Android項(xiàng)目中引入外部JAR包,這種方式是正確的,只需在項(xiàng)目屬性的Java Build
Path中選擇Add External JARs,然后選擇相應(yīng)JAR包即可。
但是,在升級(jí)到ADT17之后,Android項(xiàng)目下多出了一個(gè)Android Dependencies目錄,之前通過(guò)Add
External JARs加入的jar包依然出現(xiàn)在Referenced
Libraries目錄之下,但是似乎已經(jīng)被棄用,雖然沒有提示任何錯(cuò)誤,但是在運(yùn)行時(shí)會(huì)拋出ClassNotFoundException。
解決方法是將JAR包加入到Android
Dependencies下,其中一個(gè)默認(rèn)引入目錄是libs,因此只要將JAR包復(fù)制該目錄下。
我們用最直接的方法來(lái)看,別忘了工程下得classpath文件,這才是王道。。無(wú)論你怎么操作,最終的jar包配置都在這里。。
1、選擇項(xiàng)目屬性的Java Build Path中選擇Add External JARs,添加jar包,如圖:
最終生成的classpath如下:
encoding="UTF-8"?>
path="src"/>
path="gen"/>
path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
kind="lib"
path="libs/android-support-v4.jar"/>
path="libs/gson-2.2.2.jar"/>
path="libs/pinyin4j-2.5.0.jar"/>?
kind="output" path="bin/classes"/>
看清楚了吧,配置的只是相對(duì)路徑,難怪找不到j(luò)ar。。
有人說(shuō)選擇libs文件夾,然后選擇use?as source
foalder,試了一下classpath如下:
encoding="UTF-8"?>
path="src"/>
path="gen"/>
kind="src"
path="libs"/>?
kind="con"
path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
path="libs/android-support-v4.jar"/>
path="libs/gson-2.2.2.jar"/>
path="libs/pinyin4j-2.5.0.jar"/>
path="bin/classes"/>
增加了一句話,但還是找不到j(luò)ar包。。
使用ADT17以上,默認(rèn)創(chuàng)建的android工程會(huì)多一個(gè)Android
Dependencie這樣一個(gè)包。(這個(gè)包千萬(wàn)不要?jiǎng)h除,刪除了找都找不回來(lái),至少我還沒有發(fā)現(xiàn)找回來(lái)的辦法)所有引入的包都會(huì)備份放在Android
Dependencie包下。引入的包也必須放在指定的目錄下( 根目錄的libs目錄下),否則就找不到了。
默認(rèn)的classpath文件如下:
encoding="UTF-8"?>
path="src"/>
path="gen"/>
path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
path="com.android.ide.eclipse.adt.LIBRARIES"/>
path="bin/classes"/>
添加jar包時(shí),只需要把jar包拷貝到Libs目錄下,這時(shí)候你會(huì)看到Android
Dependencie目錄下也會(huì)出現(xiàn)剛添加的jar包。
從ADT16開始,Android項(xiàng)目中多了一個(gè)名為“Android Dependencies”
的庫(kù)應(yīng)用文件夾,這是ADT的第三方庫(kù)新的引用方式。
當(dāng)你需要引用第三方庫(kù)時(shí),只需在項(xiàng)目中新建一個(gè)名為"libs"的文件夾,然后將所有第三方包拷貝到該目錄下。當(dāng)eclipse啟動(dòng)時(shí),ADT就會(huì)自動(dòng)幫你完成庫(kù)的引用,而不需要像以前一樣自己Build
Path,也不再需要Referenced Libraries了。
如果不行,就執(zhí)行下面操作:
你還需要選擇項(xiàng)目屬性的Java Build Path,然后選中Android Dependencie,執(zhí)行Add
External JARs,然后選擇相應(yīng)JAR包即可。
encoding="UTF-8"?>
path="src"/>
path="gen"/>
path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
path="com.android.ide.eclipse.adt.LIBRARIES"/>
kind="lib"
path="D:/workspace_Android/RR/libs/gson-2.2.2.jar"/>?
kind="output" path="bin/classes"/>
只有加到這里才算真的把jar包添加進(jìn)來(lái)。。
總結(jié)
以上是生活随笔為你收集整理的java 运行 出现选择_Eclipse 运行出现java.lang.NoClassDefFoundError的解决方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux输入ls后不显示_零基础学习之
- 下一篇: 计算机缺少fixos.dll,fix_t