Android java.lang.VerifyError?

Android java.lang.VerifyError?,java,android,gdata,verifyerror,Java,Android,Gdata,Verifyerror,在我的Android应用程序中,我总是收到验证错误!我不知道为什么。每当我包含一个外部JAR时,当我尝试启动我的应用程序时,我总是会收到VerifyErrors(除了一次,当我包含apachelog4j时) 我通常通过获取库的源代码并将其添加到我的项目中来解决这个问题,但我正在尝试将 我可以在源代码中得到它,但是它的依赖项(mail.jar、activation.jar、servlet api.jar)我不能,所以我得到了verify错误。我想一劳永逸地找到这个问题的根源。我在网上看过,但他们似

在我的Android应用程序中,我总是收到验证错误!我不知道为什么。每当我包含一个外部JAR时,当我尝试启动我的应用程序时,我总是会收到VerifyErrors(除了一次,当我包含apachelog4j时)

我通常通过获取库的源代码并将其添加到我的项目中来解决这个问题,但我正在尝试将


我可以在源代码中得到它,但是它的依赖项(mail.jar、activation.jar、servlet api.jar)我不能,所以我得到了verify错误。我想一劳永逸地找到这个问题的根源。我在网上看过,但他们似乎都在谈论不完整的课堂档案?我不知道。Android使用不同的类文件格式。您是否通过Android SDK附带的“dx”工具运行第三方JAR文件?

查看LogCat,了解导致verifyerror的原因。可能是java.lang类中的某个方法在您使用的android SDK级别上不受支持(例如String.isEmpty())。

我也得到了VerfiyError。。。找不到真正的理由。它有助于将新的代码行包装到一个方法中(Eclipse,'Extract method…')。因此,在我的例子中,原因并不是一个不受支持的方法

这件事现在发生在我身上。 导致此错误的原因是我使用的方法来自我的设备拥有的较新SDK

Android 1.5设备安装了一个apk,使用以下方法:

<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"/>

来自:

“adb logcat”的输出表示无法访问的类 以及具有错误引用的类。地点 根据特定的Dalvik指令进行识别。诀窍是
要查看异常上方的日志。

要使其正常工作,您需要将库的jar添加到一个源文件夹中(即使您已经将其添加为eclipse库,也需要将其添加为源文件夹)

  • 在项目中创建目录 (e.x.“libs”)并放入库jar 在那里
  • 将目录添加到构建类 路径依据(单击屏幕上的右键) 文件夹并选择“生成路径”->“使用 作为“源文件夹”)
  • 重建您的项目

  • 我也有这个问题,就像我在用户库中的JAR一样

    我解决这个问题的方法是将它们添加到lib文件夹中,然后将它们添加到eclipse中的构建属性中

    我第一次这么做时,它不起作用,但后来我删除了它们并重新阅读,它开始起作用

    有点奇怪!但现在一直在工作


    祝你好运

    我编写了SDK 2.1中的Android API方法/类,并尝试在Android 1.6 emulator上运行它。所以我犯了那个错误

    解决方案: 将其更改为正确的emulator版本


    这对我来说很有效。。谢谢。

    这个问题也可能是由两个androids项目之间的不匹配引起的。例如,如果您使用包“com.yourcompany”开发了一个android库,那么主应用程序的项目将使用与基本包相同的包。然后假设您想要更改主应用程序的版本,因此您更改清单文件的值:版本代码和版本名称。如果在不更改库的值的情况下运行应用程序,则在对库中的对象调用任何方法时都会出现验证错误。

    我也有同样的问题。我使用2.1 r1构建,并使用新的adt 17更新为2.1 r3。我在javamail的mail.jar上验证了错误,这让我抓狂。下面是我如何解决这个问题的:

  • 创建了一个libs/文件夹并添加了jar
  • 右键单击>添加为源文件夹

  • 我试着重建,但失败了。我删除了libs/目录作为源文件夹,并删除了构建路径中3个jar文件的引用。然后我再次添加libs/文件夹,并将libs/文件夹中的每个jar添加到构建路径中。现在,它的工作如预期。这是一个奇怪的解决方法,但对我来说是有效的。

    对于后代来说,我之所以会出现这个错误,是因为我使用的是
    Arrays.copyOf()
    ,而Java 1.5对应于Android级别4,它不支持这种方法。因为我运行的是1.6下开发的库,它们编译得很好。我只是在将有问题的类转移到我的Android项目时才看到问题——然后错误被突出显示

    Uncaught handler: thread main exiting due to uncaught exception
    java.lang.VerifyError: com.j256.ormlite.dao.BaseDaoImpl$DaoConfigArray
      at com.j256.ormlite.dao.BaseDaoImpl$1.initialValue(BaseDaoImpl.java:71)
      at com.j256.ormlite.dao.BaseDaoImpl$1.initialValue(BaseDaoImpl.java:1)
      at java.lang.ThreadLocal$Values.getAfterMiss(ThreadLocal.java:429)
      at java.lang.ThreadLocal.get(ThreadLocal.java:66)
    
    在这一行中,我试图创建一个新的DaoConfigArray,该类具有以下行:

    // copyOf is only supported in Java >= 1.6
    doArray = Arrays.copyOf(daoArray, newLength);
    
    更复杂的是,第71行指向
    ThreadLocal
    初始化,我认为这是最初出现问题的原因

    private static final ThreadLocal<DaoConfigArray> daoConfigLevelLocal
        = new ThreadLocal<DaoConfigArray>() {
        @Override
        protected DaoConfigArray initialValue() {
            return new DaoConfigArray();
        }
    };
    
    private静态最终线程本地daoconfigulevellocal
    =新线程本地(){
    @凌驾
    受保护的DaoConfigArray初始值(){
    返回新的DaoConfigArray();
    }
    };
    
    在Eclipse 4.x中,如果遇到此问题,请尝试以下操作:

  • 将所有包含的第三方JAR迁移到用户库中
  • 在android库之前向上移动用户库,并在Order and Export选项卡中选中它
  • 清理并重建以运行

  • 我不得不删除依赖项目,而是编译依赖项目是jar的,并将它们包含在libs文件夹中。

    在SDK更新后,我遇到了这个问题。编译器与我的外部库有问题。我这样做了:右键单击项目,然后“android工具>添加支持库…”在我的项目库“android-support-v4.jar”上安装

    在我的例子中,它发生在我从Eclipse Indigo更新到Eclipse Juno时:我不确定真正的原因是什么,但是,我长期从事的Android项目因为那个异常而停止工作

    经过许多小时的努力,我找到了解决办法

    在我的Android项目中,我使用同一工作区中的其他项目(比如“MyUtils”)。因此,我需要做以下工作:

    右键单击Android项目->构建路径->配置构建路径

    现在,转到“订单和导出”选项卡
    public class A { ... }
    public class B extends A { ... }
    public class C extends A { ... }
    
    A[] result = null;
    if (something)
        result = new B[cursor.getCount()];
    else
        result = new C[cursor.getCount()];
    
    // Fill result
    ...
    
    <uses-sdk
       android:minSdkVersion="9"
       android:targetSdkVersion="18" />
    
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
       setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    }
    
    } catch (NetworkOnMainThreadException nomte) {
       // log this exception
    } catch (SocketTimeoutException socketTimeoutException) {
       // log this exception
    }
    
    testCoverageEnabled = true
    
    public class MyApplication extends MultiDexApplication
    
    protected void attachBaseContext(Context base) {
     super.attachBaseContext(base);
     MultiDex.install(this);
    }
    
     dexOptions {
          preDexLibraries = false
       }
    
    afterEvaluate {
       tasks.matching {
          it.name.startsWith('dex')
       }.each { dx ->
          if (dx.additionalParameters == null) {
             dx.additionalParameters = ['--multi-dex']
          } else {
             dx.additionalParameters += '--multi-dex'
          }
       }
    }
    
    compile 'com.fasterxml.jackson.core:jackson-databind:2.2.+'
    compile 'com.fasterxml.jackson.core:jackson-core:2.2.+'
    compile 'com.fasterxml.jackson.core:jackson-annotations:2.2.+'
    
    compile 'com.fasterxml.jackson.core:jackson-annotations:2.7.0-rc3'
    compile 'com.fasterxml.jackson.core:jackson-databind:2.7.0-rc3'
    
    compileSdkVersion 21
    buildToolsVersion '19.1.0'
    
    compileSdkVersion 21
    buildToolsVersion '21.1.2'
    
    compileSdkVersion 21
    
    compileSdkVersion 19