Updating sdk got NoClassDefFoundError for zxing

我的未来我决定 提交于 2019-11-27 02:36:31

问题


How to solve this NoClassDefFoundError. I have integrated Zxing in my app, every thing is working fine. Then I have updated my sdk and eclipse plugin, and when I run the project the log says

03-27 17:27:45.173: E/AndroidRuntime(8917): FATAL EXCEPTION: main
03-27 17:27:45.173: E/AndroidRuntime(8917): java.lang.ExceptionInInitializerError
03-27 17:27:45.173: E/AndroidRuntime(8917):     at java.lang.Class.newInstanceImpl(Native Method)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at java.lang.Class.newInstance(Class.java:1429)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.os.Looper.loop(Looper.java:123)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at android.app.ActivityThread.main(ActivityThread.java:4627)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at java.lang.reflect.Method.invokeNative(Native Method)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at java.lang.reflect.Method.invoke(Method.java:521)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-27 17:27:45.173: E/AndroidRuntime(8917):     at dalvik.system.NativeStart.main(Native Method)
03-27 17:27:45.173: E/AndroidRuntime(8917): Caused by: java.lang.NoClassDefFoundError: com.google.zxing.ResultMetadataType
03-27 17:27:45.173: E/AndroidRuntime(8917):     at records.model.CaptureActivity.<clinit>(CaptureActivity.java:94)`

回答1:


I didn't have to put the jar-library in assets or lib(s), but only tick the box for this jar in Properties -> Java Build Path -> "Order and Export" (it was listed before, but not selected)

You might have to do a project > clean after this to take effect! (Thanks mwengler and Mohamed)




回答2:


Go to Properties -> Java Build Path -> "Order and Export"

Then order the core.jar to the first position and select it!

you must clean your project after your operation. Project -> clean

That will solve the problem




回答3:


You are referencing the Class com.google.zxing.ResultMetadataType in CaptureActivity.java on line 94 but the definition for this Class cannot be found (ClassDefNotFound). If it cannot be found then it must not be on your class path.

There is probably a .jar file somewhere on your disk that contains com.google.zxing.ResultMetadataType (seemingly core.jar) place this on your project's class path to resolve this issue.




回答4:


For some reason, ADT is no longer including libraries from your build path in the generated .apk file.

To fix, create a "libs" folder in the root of your project (ie: bin, src, assets, libs) and put the core.jar file in there. Remove all other instances from your build path, and everything should work fine.

NoClassDefFoundError - Eclipse and Android




回答5:


This worked for me (after about 8 hours of messing around). The key is that you need to create the libs folder in the CaptureClient project, drop in core.jar, then add a reference to core.jar.

Then from your project, reference the CaptureClient project.

Wow, that was about a million times harder than it should have been!

https://stackoverflow.com/a/2248017/1173800




回答6:


It means exactly what it says. You are using library code that you did not actually include into your app. Make sure the the contents of core.jar from the project are part of your project, as a library project.




回答7:


I had the same thing happen to me with a different .jar also after upgrading SDK and plugin.

Andrews answer below with link stackoverflow.com/a/2248017/180295 with points 3 and 4 worked for me.




回答8:


I had the same issue but was using the new Gradle build and Adroid Studio.

What solved it for me was to go outside of Android Studio and do a clean and build from the command-line using gradle:

gradle clean
gradle assembleDebug 

and the NoClassDefFound exception magically went away




回答9:


In my case the problem was with Android Build Tools I had version 18 but need to have Android Build Tools version 19 or later because I need to have my eclipse JDK compliance to 1.7 instead of 1.6 as CORE.JAR using Java version 1.7.

I would also suggest to look at the messages in android console during build process it will give you idea of exact problem.




回答10:


Add the core.jar to libs folder of your android project and don't add it as an external jar in java build path.



来源:https://stackoverflow.com/questions/9889737/updating-sdk-got-noclassdeffounderror-for-zxing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!