问题
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