如何解决这个NoClassDefFoundError。 我已经在我的应用程序中集成了Zxing,每件事都运行良好。然后我更新了我的sdk和eclipse插件,当我运行项目时,日志显示
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)`
答案 0 :(得分:38)
我没有把jar文件库放在资产或lib中,但只在“属性”中勾选此jar的框 - &gt; Java构建路径 - &gt; “订单和出口”(之前已列出,但未选中)
您可能需要执行一个项目&gt;这之后干净才能生效! (感谢mwengler和Mohamed)
答案 1 :(得分:11)
转到属性 - &gt; Java构建路径 - &gt; “订单和出口”
然后将core.jar命令到第一个位置并选择它!
您必须在操作后清理项目。项目 - &gt;清洁
这将解决问题
答案 2 :(得分:1)
您正在引用com.google.zxing.ResultMetadataType
行CaptureActivity.java
中的类94
,但无法找到此类的定义(ClassDefNotFound)。如果找不到它,那么它一定不能在你的课程路径上。
您的磁盘上某处可能有一个.jar文件,其中包含com.google.zxing.ResultMetadataType
(看似core.jar
)将其放在项目的类路径上以解决此问题。
答案 3 :(得分:1)
出于某种原因,ADT不再包含生成的.apk文件中构建路径中的库。
要修复,请在项目的根目录中创建一个“libs”文件夹(即:bin,src,assets,libs)并将core.jar文件放在那里。从构建路径中删除所有其他实例,一切都应该正常工作。
答案 4 :(得分:1)
这对我有用(经过大约8个小时的搞乱)。关键是你需要在 CaptureClient 项目中创建libs文件夹,放入core.jar,然后添加对core.jar的引用。
然后从您的项目中引用CaptureClient项目。
哇,这比应该的情况要难一百万倍了!答案 5 :(得分:0)
这正是它所说的。您正在使用未实际包含在应用程序中的库代码。确保项目中core.jar
的内容是项目的一部分,作为库项目。
答案 6 :(得分:0)
在升级SDK和插件之后,我也遇到了同样的问题,并且使用了不同的.jar。
安德鲁斯回答下面的链接stackoverflow.com/a/2248017/180295,第3点和第4点为我工作。
答案 7 :(得分:0)
我遇到了同样的问题但是使用了新的Gradle构建和Adroid Studio。
为我解决的问题是走出Android Studio并使用gradle从命令行进行清理和构建:
gradle clean
gradle assembleDebug
并且NoClassDefFound异常神奇地消失了
答案 8 :(得分:0)
在我的情况下问题是Android Build Tools我有版本18但是需要Android Build Tools版本19或更高版本,因为我需要使用Java版本1.7将我的eclipse JDK合规性设置为1.7而不是1.6作为CORE.JAR
我还建议在构建过程中查看android控制台中的消息,它会让你知道确切的问题。
答案 9 :(得分:0)
将core.jar添加到android项目的libs文件夹中,不要在java构建路径中将其添加为外部jar。