您的位置:首页 > 移动开发 > Android开发

android中第三方jar导入报java.lang.NoClassDefFoundError解决办法

2013-02-18 15:27 435 查看
在android中导入第三方jar时,常见的操作有两种:

①:右键工程->Build Path->configure build path。再弹出的libraries里,选择 Add ExternalJARs

②:右键工程->Build path->Add Libraries,再在弹出的窗体中选择“User library”,点击“下一步(Next)”,点击“User Libraries”按钮在出现的界面中点击“New..”按钮在弹出的 文本框中自己随便起一个名字,点击“确定”,点击“Add jars”按钮选择第三方jar包

以上两种方法都可以把地方jar导入到项目中,但是当我们点击"Run As"->"Android Application",通过真机或者模拟器运行时会出现类似一下的异常:

02-18 15:36:45.934: E/AndroidRuntime(10401): FATAL EXCEPTION: main

02-18 15:36:45.934: E/AndroidRuntime(10401): java.lang.NoClassDefFoundError: jp.sourceforge.qrcode.QRCodeDecoder

02-18 15:36:45.934: E/AndroidRuntime(10401): at com.sjc.camer.CameraDemoActivity$1.onPictureTaken(CameraDemoActivity.java:119)

02-18 15:36:45.934: E/AndroidRuntime(10401): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:625)

02-18 15:36:45.934: E/AndroidRuntime(10401): at android.os.Handler.dispatchMessage(Handler.java:130)

02-18 15:36:45.934: E/AndroidRuntime(10401): at android.os.Looper.loop(SourceFile:351)

出现此异常的原因是我们只有把第三方的jar引用到了项目工程里面而没有放到apk中,所以正确的方法如下:

在工程下面建立一个libs文件夹,把需要的第三方jar拷贝到里面。将引用的第三方jar包,添加进工作的build path。接下来(最关键的一部)在/libs 文件夹上右键->Build Path ->Use as Source Folder。到此java.lang.NoClassDefFoundError异常解决了。但是新的问题又来了,当我们点击"Run As"->"Android Application"时,会在控制台输出 如下类似的错误信息:

UNEXPECTED TOP-LEVEL EXCEPTION:

java.lang.IllegalArgumentException: already added: Ljp/sourceforge/reedsolomon/Galois;

[2013-02-19 15:24:25 - CameraDemo] Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)

出现该错误的原因是:把libs弄成了Source Folder.导致里面的类被重复编译?

解决的办法:在/libs 文件夹上右键->Remove from Build Path,再次编译工程,问题解决了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐