如何修复在我们的应用程序中使用第三方库时发生的NoClassDefFoundError?

时间:2012-08-08 10:02:13

标签: android android-library android-datepicker

我正在使用android wheel在我的应用程序中选择日期和时间。但是在使用这个库时我对这个NoClassDefFoundError感到厌烦。

我在wheel.jar文件夹中包含了libs,但我仍然在运行时遇到错误。

以下是logcat错误:

  

08-08 15:19:22.078:E / AndroidRuntime(21223):致命异常:主要       08-08 15:19:22.078:E / AndroidRuntime(21223):java.lang.NoClassDefFoundError:kankan.wheel.R $ drawable       08-08 15:19:22.078:E / AndroidRuntime(21223):at kankan.wheel.widget.WheelView.initResourcesIfNecessary(WheelView.java:427)       08-08 15:19:22.078:E / AndroidRuntime(21223):at kankan.wheel.widget.WheelView.calculateLayoutWidth(WheelView.java:482)       08-08 15:19:22.078:E / AndroidRuntime(21223):at kankan.wheel.widget.WheelView.onMeasure(WheelView.java:518)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.view.View.measure(View.java:12775)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1385)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.widget.LinearLayout.measureHorizo​​ntal(LinearLayout.java:1027)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.widget.LinearLayout.onMeasure(LinearLayout.java:565)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.view.View.measure(View.java:12775)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.widget.RelativeLayout.measureChildHorizo​​ntal(RelativeLayout.java:594)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.widget.RelativeLayout.onMeasure(RelativeLayout.java:376)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.view.View.measure(View.java:12775)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.widget.RelativeLayout.measureChildHorizo​​ntal(RelativeLayout.java:594)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.widget.RelativeLayout.onMeasure(RelativeLayout.java:376)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.view.View.measure(View.java:12775)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.widget.FrameLayout.onMeasure(FrameLayout.java:293)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.view.View.measure(View.java:12775)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.widget.FrameLayout.onMeasure(FrameLayout.java:293)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.view.View.measure(View.java:12775)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.widget.FrameLayout.onMeasure(FrameLayout.java:293)       08-08 15:19:22.078:E / AndroidRuntime(21223):at com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure(PhoneWindow.java:2240)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.view.View.measure(View.java:12775)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1151)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2539)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.os.Handler.dispatchMessage(Handler.java:99)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.os.Looper.loop(Looper.java:137)       08-08 15:19:22.078:E / AndroidRuntime(21223):在android.app.ActivityThread.main(ActivityThread.java:4514)       08-08 15:19:22.078:E / AndroidRuntime(21223):at java.lang.reflect.Method.invokeNative(Native Method)       08-08 15:19:22.078:E / AndroidRuntime(21223):at java.lang.reflect.Method.invoke(Method.java:511)       08-08 15:19:22.078:E / AndroidRuntime(21223):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:790)       08-08 15:19:22.078:E / AndroidRuntime(21223):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)       08-08 15:19:22.078:E / AndroidRuntime(21223):at dalvik.system.NativeStart.main(Native Method)       08-08 15:24:27.601:I / Process(21223):发送信号。 PID:21223 SIG:9

3 个答案:

答案 0 :(得分:2)

你应该试试这个:

  1. Remove所有对JAR项目中Java Build Path的引用.->你的代码不应该没有错误地构建

  2. 如果项目的根目录libs folder不存在,请创建Copy the JAR into the libs folder

  3. 如果仍然没有运行OK。右键单击您的项目> Android工具>修复项目属性

  4. clean your project然后跑。它会起作用

    查看现有的回答Getting NoClassDefFoundError

答案 1 :(得分:2)

尝试在项目中订购和导出jar库。

按照以下步骤(在Eclipse中):

  
      
  1. 转到项目属性
  2.   
  3. 选择Java Build Path
  4.   
  5. 选择最后一个标签“订购和导出”
  6.   
  7. 将您的Jar(图书馆)移至顶部位置
  8.   
  9. 清理并建造项目
  10.   

我不知道究竟发生了什么,但是一旦我遇到同样的问题,我就以上述方式解决了问题。希望这对你也有帮助。

答案 2 :(得分:2)

Atlast我找到了解决方案,

不是在构建路径中添加jar文件,而是转到项目属性 - > Android - >点击库部分中的添加 - >并选择库项目。

enter image description here

enter image description here