2012-03-27 79 views
19

如何解决这个NoClassDefFoundError。 我已经在我的应用程序中集成了Zxing,每件事情都很好。然后我已经更新了我的SDK和eclipse插件,当我运行该项目时,日志中会显示更新sdk得到了zxing的NoClassDefFoundError

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)` 

回答

38

我没有把资产或LIB(S)的jar库,但只在方框里打勾这个罐子在属性 - > Java构建路径 - >“排序和导出” (之前已列出,但未被选中)

您可能必须执行一个项目>清理后才能生效! (感谢mwengler和Mohamed)

+1

这个工作对我来说,一旦我做了项目>干净。如果它适合你,让其他人陷入麻烦找到它。 (理想情况下,@Kishore会接受这个答案。) – mwengler 2012-07-28 01:22:21

+0

@mwengler感谢您提供干净的提示,它只在我干净的时候为我工作。 @截至感谢您的有用的答案,请你提的“干净”的答案,因为它只用干净的工作对我来说! – 2012-10-30 18:44:56

+0

升级Android SDK后,我遇到了同样的问题。而且这种方法有效。 – flypen 2013-06-30 05:05:14

0

这意味着它的含义。您使用的库代码实际上并未包含到您的应用程序中。确保项目中core.jar的内容是您项目的一部分,作为图书馆项目。

+0

我已经在资产文件夹core.jar添加添加和配置像这样BuilPath - >配置构建 - >添加罐 – Kishore 2012-03-27 12:56:22

+0

当然,但你没有设置它实际上包括在应用程序中的类! – 2012-03-27 13:18:40

1

您正在参考中的类com.google.zxing.ResultMetadataType,行94,但无法找到此类的定义(ClassDefNotFound)。如果找不到,那么它不能在你的课程路径中。

您的磁盘上可能存在一个.jar文件,其中包含com.google.zxing.ResultMetadataType(看似core.jar)将其放置在项目的类路径中以解决此问题。

+0

我在资产文件夹中添加了core.jar并进行了配置 – Kishore 2012-03-27 13:00:27

+0

您是否确认这是合适的core.jar?如果您将其作为zip文件打开,您可以找到“com.google.zxing.ResultMetadataType”? – 2012-03-27 13:17:04

+0

是,如果我打开有com.google.zxing.ResultMetadataType.class文件 – Kishore 2012-03-27 13:26:44

1

由于某些原因,ADT不再在生成的.apk文件中包含来自构建路径的库。

要修复,请在项目的根目录(例如:bin,src,assets,libs)中创建一个“libs”文件夹,并将core.jar文件放在该文件夹中。从构建路径中删除所有其他实例,并且一切都应该正常工作。

NoClassDefFoundError - Eclipse and Android

1

这为我工作(约8小时瞎搞后)。关键是您需要在CaptureClient项目中创建libs文件夹,放入core.jar,然后添加对core.jar的引用。

然后从您的项目中引用CaptureClient项目。

哇,这应该比它本来要难上百万倍!

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

11

进入属性 - > Java构建路径 - >“排序和导出”

然后责令core.jar添加到第一位置,并选择它!

您必须在操作后清理您的项目。项目 - >清洁

这将解决这个问题

+1

重新排序顶端没有必要对我来说。我只需要勾选复选框。啊,这必须为zxing库和你的应用程序完成。 – 2012-08-23 07:41:05

0

我有同样的问题,但使用新的摇篮建立和的Adroid工作室。

什么解决了这个问题对我来说是到Android Studio之外去,做一个干净的,并使用gradle这个在命令行编译:

gradle clean 
gradle assembleDebug 

和NoClassDefFound例外奇迹般地走了

0

在我这个问题出在Android构建工具上我有版本18,但需要安装Android构建工具19或更新版本,因为我需要使用Java版本1.7将我的eclipse JDK合规性设置为1.7而不是1.6作为CORE.JAR。

我也建议在构建过程中查看Android控制台中的消息,它会让你知道确切的问题。

0

将core.jar添加到您的android项目的libs文件夹中,并且不要将它作为外部jar添加到java构建路径中。