【问题标题】:NoClassDefFoundError: com.google.zxing.ResultMetadataType for zxingNoClassDefFoundError: com.google.zxing.ResultMetadataType 用于 zxing
【发布时间】:2015-08-06 03:49:45
【问题描述】:

我正在开发一个通过 ZXing 在 Android 上扫描条形码的应用程序。 我关注这个tutorial

但是当我运行我的应用程序时,得到了 NoClassDefFoundError 并且应用程序完成了。

08-06 10:42:43.401: E/AndroidRuntime(10391): FATAL EXCEPTION: main
08-06 10:42:43.401: E/AndroidRuntime(10391): Process: com.foxconn.cnsbg.it.barcodescanner, PID: 10391
08-06 10:42:43.401: E/AndroidRuntime(10391): java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/zxing/ResultMetadataType;
08-06 10:42:43.401: E/AndroidRuntime(10391):    at com.google.zxing.client.android.CaptureActivity.<clinit>(CaptureActivity.java:93)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at java.lang.reflect.Constructor.newInstance(Native Method)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at java.lang.Class.newInstance(Class.java:1572)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at android.app.Instrumentation.newActivity(Instrumentation.java:1065)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2246)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2405)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at android.app.ActivityThread.access$800(ActivityThread.java:149)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1324)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at android.os.Handler.dispatchMessage(Handler.java:102)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at android.os.Looper.loop(Looper.java:211)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at android.app.ActivityThread.main(ActivityThread.java:5333)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at java.lang.reflect.Method.invoke(Native Method)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at java.lang.reflect.Method.invoke(Method.java:372)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
08-06 10:42:43.401: E/AndroidRuntime(10391): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.zxing.ResultMetadataType" on path: DexPathList[[zip file "/data/app/com.foxconn.cnsbg.it.barcodescanner-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
08-06 10:42:43.401: E/AndroidRuntime(10391):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
08-06 10:42:43.401: E/AndroidRuntime(10391):    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
08-06 10:42:43.401: E/AndroidRuntime(10391):    ... 15 more
08-06 10:42:43.401: E/AndroidRuntime(10391):    Suppressed: java.lang.ClassNotFoundException: com.google.zxing.ResultMetadataType
08-06 10:42:43.401: E/AndroidRuntime(10391):        at java.lang.Class.classForName(Native Method)
08-06 10:42:43.401: E/AndroidRuntime(10391):        at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
08-06 10:42:43.401: E/AndroidRuntime(10391):        at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
08-06 10:42:43.401: E/AndroidRuntime(10391):        at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
08-06 10:42:43.401: E/AndroidRuntime(10391):        ... 16 more
08-06 10:42:43.401: E/AndroidRuntime(10391):    Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

我在 Google 上搜索并修复了 CaptureActivity 项目中的构建路径,例如:

并将 core-2.2.jar 添加到 CaptureActivity 项目和我的项目的 libs 文件夹中。我该如何解决这个问题?

【问题讨论】:

  • 要么将其添加到您的构建路径中,要么将 jar 包含到库中......不是两者兼而有之,为了上帝的缘故使用工作室
  • 我已按照您的建议进行了修复,但仍然得到了这个

标签: android zxing noclassdeffounderror barcode-scanner


【解决方案1】:

看看这个帖子: Updating sdk got NoClassDefFoundError for zxing

引用到

“我不必将 jar-library 放在 assets 或 lib(s) 中,而只需在 Properties -> Java Build Path -> “Order and Export”中勾选此 jar 的框(之前已列出,但未选中)

你可能需要做一个项目 > clean after this 生效!”

这对我有用!

【讨论】:

    【解决方案2】:

    NoClassDefFoundError 发生在您的代码依赖的类文件并且在编译时存在但在运行时找不到时。

    由于core-2.2.jar 中的类是应用程序的基础,为了保持一致性,您希望将此依赖项添加到您的 lib 文件夹中,而不是在外部将其提供给构建路径。

    还要检查构建时间和运行时classpath 的差异。对此进行快速检查应该可以解决您的问题。

    【讨论】:

    • 我已将 core-2.2.jar 放入 libs 文件夹,而不是在外部提供构建路径并且问题未修复:(
    • 您的代码是否使用命令行javacjava 在Eclipse 之外执行?
    • 不,我在 Eclipse 上通过 Run As/Android Application 执行并在我的 android 手机上运行应用程序
    • 这是您的.apk 文件中在设备上执行的core-2.2.jar 的一部分吗?
    • 嗯,对不起,我是新手,但是如何检查呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多