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

            在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,再次编译工程,问题解决了。

   

   


发布了6 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/sjc53yy/article/details/8587806