【问题标题】:Updating sdk got NoClassDefFoundError for zxing更新 sdk 得到了 zxing 的 NoClassDefFoundError
【发布时间】:2012-03-27 12:43:09
【问题描述】:

如何解决这个 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)`

【问题讨论】:

    标签: android eclipse zxing


    【解决方案1】:

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

    你可能需要做一个项目 > clean 之后才能生效! (感谢 mwengler 和 Mohamed)

    【讨论】:

    • 这对我有用,一旦我做了项目 > 清洁。如果它对您有用,请投票,以便其他有麻烦的人找到它。 (理想情况下,@Kishore 会接受这个答案。)
    • @mwengler 感谢您的清洁提示,它仅在我进行清洁时才对我有用。 @直到感谢您提供有用的答案,请您在答案中提及“干净”,因为它只对我有用!
    • 我在升级Android SDK后也遇到了同样的问题。而且这种方法有效。
    【解决方案2】:

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

    然后将core.jar排序到第一个位置并选中!

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

    这样就能解决问题了

    【讨论】:

    • 对我来说不需要重新排序。我只需要勾选复选框。啊,这必须为 zxing 库和您的应用程序完成。
    【解决方案3】:

    您在94 线上的CaptureActivity.java 中引用了类com.google.zxing.ResultMetadataType,但找不到该类的定义(ClassDefNotFound)。如果找不到,那么它一定不在您的类路径中。

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

    【讨论】:

    • 我在 assets 文件夹中添加了 core.jar 并进行了配置
    • 你能确认这是合适的 core.jar 吗?如果你以 zip 文件的形式打开它,你能找到com.google.zxing.ResultMetadataType吗?
    • 是的,如果我打开有 com.google.zxing.ResultMetadataType.class 文件
    • 啊,您是否按照此处描述的步骤操作:stackoverflow.com/a/2248017/180295(特别是第 3 和第 4)
    【解决方案4】:

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

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

    NoClassDefFoundError - Eclipse and Android

    【讨论】:

      【解决方案5】:

      这对我有用(经过大约 8 个小时的折腾)。关键是你需要在CaptureClient项目中创建libs文件夹,放入core.jar,然后添加对core.jar的引用。

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

      哇,这比它应该做的要难大约一百万倍!

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

      【讨论】:

        【解决方案6】:

        这正是它所说的意思。您使用的库代码实际上并未包含在您的应用程序中。确保项目中core.jar 的内容是您项目的一部分,作为库项目。

        【讨论】:

        • 我在 assets 文件夹中添加了 core.jar 并像这样配置它 BuilPath-->config build-->Add jars
        • 当然可以,但您尚未将其设置为在应用程序中实际包含类!
        【解决方案7】:

        在升级 SDK 和插件后,我使用不同的 .jar 也发生了同样的事情。

        安德鲁斯回答下面的链接stackoverflow.com/a/2248017/180295,第 3 点和第 4 点对我有用。

        【讨论】:

          【解决方案8】:

          我遇到了同样的问题,但我使用的是新的 Gradle 版本和 Adroid Studio。

          解决这个问题的方法是跳出 Android Studio 并使用 gradle 从命令行进行清理和构建:

          gradle clean
          gradle assembleDebug 
          

          NoClassDefFound 异常神奇地消失了

          【讨论】:

            【解决方案9】:

            在我的情况下,问题出在 Android Build Tools 我有版本 18 但需要 Android Build Tools 版本 19 或更高版本,因为我需要使用 Java 版本 1.7 让我的 eclipse JDK 符合 1.7 而不是 1.6 作为 CORE.JAR .

            我还建议在构建过程中查看 android 控制台中的消息,它会让您了解确切的问题。

            【讨论】:

              【解决方案10】:

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

              【讨论】:

                猜你喜欢
                • 2012-04-06
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-04-06
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多