【问题标题】:Class Rejected in Android ApplicationAndroid 应用程序中的类被拒绝
【发布时间】:2012-03-20 05:24:55
【问题描述】:

以下是我的 Android 应用程序正在显示的运行时异常的 LogCat 输出,首先是生成的 wranings,然后是应用程序退出时的堆栈跟踪:

03-01 12:04:37.663: W/dalvikvm(2285): VFY: unable to resolve exception class 194 (Lcom/google/zxing/WriterException;)
03-01 12:04:37.663: W/dalvikvm(2285): VFY: unable to find exception handler at addr 0x4c
03-01 12:04:37.663: W/dalvikvm(2285): VFY:  rejected Lcom/beslogic/profile/BLProfileBuilder;.saveProfileAsQRCode (Landroid/app/Activity;Lcom/beslogic/profile/BLProfileModel;Ljava/io/FileOutputStream;)Z
03-01 12:04:37.663: W/dalvikvm(2285): VFY:  rejecting opcode 0x0d at 0x004c
03-01 12:04:37.663: W/dalvikvm(2285): VFY:  rejected Lcom/beslogic/profile/BLProfileBuilder;.saveProfileAsQRCode (Landroid/app/Activity;Lcom/beslogic/profile/BLProfileModel;Ljava/io/FileOutputStream;)Z
03-01 12:04:37.663: W/dalvikvm(2285): Verifier rejected class Lcom/beslogic/profile/BLProfileBuilder;





 03-01 12:07:31.633: E/AndroidRuntime(2285): FATAL EXCEPTION: main
    03-01 12:07:31.633: E/AndroidRuntime(2285): java.lang.VerifyError: com.beslogic.profile.BLProfileBuilder
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at com.urbanagenda.UAMemberActivity.completeTransaction(UAMemberActivity.java:401)
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at com.beslogic.remotpayment.connection.PostJSONTask.sendTransactionComplete(PostJSONTask.java:175)
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at com.beslogic.remotpayment.connection.PostJSONTask.onPostExecute(PostJSONTask.java:162)
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at com.beslogic.remotpayment.connection.PostJSONTask.onPostExecute(PostJSONTask.java:1)
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at android.os.AsyncTask.finish(AsyncTask.java:417)
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at android.os.AsyncTask.access$300(AsyncTask.java:127)
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at android.os.Handler.dispatchMessage(Handler.java:99)
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at android.os.Looper.loop(Looper.java:123)
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at android.app.ActivityThread.main(ActivityThread.java:4627)
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at java.lang.reflect.Method.invokeNative(Native Method)
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at java.lang.reflect.Method.invoke(Method.java:521)
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:651)
    03-01 12:07:31.633: E/AndroidRuntime(2285):     at dalvik.system.NativeStart.main(Native Method)

我有一个 BLProfileBuilder 所在的库项目。该项目引用了 ZXING android 项目,我也将其标记为库项目。还有对 ZXING 核心库的参考。通过添加外部 .jar 文件可以正确引用所有内容。我的主要应用程序针对 Android API 级别 8 (2.2),而其他应用程序针对 2.1。任何提示如何解决这个问题。我已按照 ZXING 项目页面上的所有说明,以及添加库项目和第三方 jar 文件的 Android 开发者指南。

我将如何解决此问题或跟踪错误?

【问题讨论】:

    标签: java android


    【解决方案1】:

    如果您在 StackOverflow 中搜索 VerifyError 和 Android,您会发现一些可以帮助您入门的好帖子:Android java.lang.VerifyError? 我怀疑您会发现正如高(但不被接受)答案所暗示的那样,您'正在使用您的 API 级别不支持的 Java 中的某些方法。

    【讨论】:

    • 看了一下,但我不知道是哪种方法。 API 级别是我仔细检查的第一件事之一。我确实找到了一个解决方案,但它并不优雅,我必须(在我的主应用程序中)引用包含异常声明的 zxing 核心库(core.jar),即使我的主应用程序根本不使用这些类,只是我的图书馆项目(BLProfileBuilder)。
    • 啊……好吧,给你。如果 BLProfileBuilder 使用异常类但不包含它,那么您必须使用异常类引用该 3rd 方 jar 也就不足为奇了。
    • 它确实包含它,这是令人困惑的部分。为了修复我在上一条评论中犯的错误,我不得不在我的主项目中将 ZXING Android 项目作为库项目引用,即使它没有使用它。 BLProfileBuuilder 拥有它需要的所有参考资料,包括 ZXING Android 项目和核心库。
    【解决方案2】:

    尝试使用 Oracle JVM 而不是 OpenJDK 的......这为我解决了这个神秘问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 2012-03-21
      • 1970-01-01
      • 1970-01-01
      • 2015-11-13
      • 2018-01-09
      相关资源
      最近更新 更多