java.lang.VerifyError-将开发转移到另一台机器后,android应用程序未启动

java.lang.VerifyError-将开发转移到另一台机器后,android应用程序未启动,java,android,adb,forceclose,Java,Android,Adb,Forceclose,我已经在台式电脑上开发了几个星期的应用程序。我已经开始在另一台机器上开发,所以,我检查了代码=构建了它,所有这些都很好-通过在eclipse中按play来安装它,但由于强制关闭而失败 不太好 这是堆栈跟踪: 我认为这可能与android sdk的版本有关,但我运行的版本与桌面上的版本相同 应用程序最终抛出堆栈跟踪的行是: // Initialize a TabSpec for each tab and add it to the TabHost spec = tabHost.newTabSpec

我已经在台式电脑上开发了几个星期的应用程序。我已经开始在另一台机器上开发,所以,我检查了代码=构建了它,所有这些都很好-通过在eclipse中按play来安装它,但由于强制关闭而失败

不太好

这是堆栈跟踪:

我认为这可能与android sdk的版本有关,但我运行的版本与桌面上的版本相同

应用程序最终抛出堆栈跟踪的行是:

// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("replaylist").setIndicator("Replay List",
    res.getDrawable(R.drawable.tabview_changeicon))
    .setContent(intent);

tabHost.addTab(spec);
有人能帮我解决这个问题吗

我在安卓系统中已经多次看到“验证”问题。通常,当您使用标准Java6API,但Android中不存在该api时,就会发生这种情况。因为eclipse正在基于JRE“验证”代码,所以如果您使用本机Android JRE(dalvik)中不存在的API,它不会抱怨。结果是一个强制关闭和一个神秘的验证消息。当您使用标准JavaJDK编译一个库,然后在Android项目中使用该库时,您会看到很多


最好是使用Java5兼容性编译库项目,看看eclipse抱怨哪些API。通常,您会发现您使用的是String或StringBuffer(或其他一些核心类)中尚未在Android中实现的方法。我还因为使用了一个未在Android中实现的构造函数而感到痛苦。

最终的问题是由于一个过时的Android sdk管理器,我相信它无法访问pastebin,你能把stacktrace放在这里吗?试过这个-它抱怨的只是@Override注解和内联类…正如我所说的-这在我的另一台机器上100%有效,没有发生代码更改,所以为什么它会突然出现这个错误并与无效的API相关联?我不认为这是同一个问题?让我感兴趣的是它每次抱怨TabHost.addSpec的方式…?如果你有jar的源代码,那么你可以尝试将该项目变成一个Android库项目并使用它。通过这种方式,看看是否有不同,因为在使用库项目时,JAR将使用dalvik编译器重建。堆栈跟踪显示无法创建您的活动,因此,如果您的活动是某个选项卡,则这可能是addTab显示为失败的原因。另一件要检查的事情。。。确保您的Android SDK与您正在测试的设备的模拟器的SDK相匹配。也就是说,如果您包括4.0.3 SDK,但随后在2.3设备上进行测试,那么如果您使用了4.x api,则可能会遇到问题。(SDK的任何2个版本也是如此——即,使用2.2 api,但部署到2.1设备)