gpt4 book ai didi

android - IntelliJ 上的 Android 测试中源文件的 NoClassDefFoundError

转载 作者:行者123 更新时间:2023-11-29 21:50:13 30 4
gpt4 key购买 nike

编辑

经过进一步调查,发现这个ant test命令也不起作用,所以这不是IntelliJ的问题。

在应用程序启动时有一些警告表明问题来自与 ormlite 框架的错误链接:

WARN/dalvikvm(22209): Class resolved by unexpected DEX: Lcom/example/android/app/noclassdef/module/dao/BaseBrowserDAO;(0x4051f5e8):0x98558 ref [Lcom/j256/ormlite/dao/Dao;] Lcom/j256/ormlite/dao/Dao;(0x4051f5e8):0x97ec0WARN/dalvikvm(22209): (Lcom/example/android/app/noclassdef/module/dao/BaseBrowserDAO; had used a different Lcom/j256/ormlite/dao/Dao; during pre-verification)WARN/dalvikvm(22209): Link of class 'Lcom/example/android/app/noclassdef/module/dao/BaseBrowserDAO;' failed

但这只发生在测试项目中,主项目没有问题。

我发现自从 R17 以来,jar“真的”需要在 libs 目录中,所以我想也许我应该将 jar 复制到测试项目的 libs 目录中,但它并没有改变任何东西。

原创

我的 Android 测试项目没有在 Android 上运行,我收到以下错误:

java.lang.NoClassDefFoundError: com.mycompany.android.module.shop.database.MyDBHelperat com.mycompany.android.module.shop.dao.DAOFactory.(DAOFactory.java:51)at com.mycompany.android.module.shop.dao.DAOFactory.initSingleton(DAOFactory.java:58)at com.mycompany.android.app.shop.test.EShopBaseTestCase.setUp(EShopBaseTestCase.java:41)at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)Caused by: java.lang.ClassNotFoundException: com.mycompany.android.module.shop.database.MyDBHelper in loader dalvik.system.PathClassLoader[/system/framework/android.test.runner.jar:/data/app/com.mycompany.android.app.shop.test-1.apk:/mnt/asec/com.mycompany.android.app.shop-1/pkg.apk]at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)at java.lang.ClassLoader.loadClass(ClassLoader.java:551)at java.lang.ClassLoader.loadClass(ClassLoader.java:511)... 12 more

在 Eclipse 上测试运行没有任何问题,所以我猜这是一个配置问题。

“缺失”类是 App 的源类,它不在 jar 中,也不在任何外部框架中。

更让我困惑的是,查看堆栈跟踪 com.mycompany.android.module.shop.dao.DAOFactory 存在但不存在 com.mycompany.android.module.shop.database.MyDBHelper(它们在同一个项目中...)

有人有想法吗?我已经坚持了一段时间了。这不是我第一次将测试项目与 IntelliJ 一起使用,所以我将我的配置与工作项目进行了比较,但我发现没有任何区别......

最佳答案

好的,实际上重要的信息是

[...] had used a different Lcom/j256/ormlite/dao/Dao; during pre-verification

这意味着我的 ormlite jar 被复制到每个项目中,而不是在主项目中正确导出。

只需选中 jar 上的“导出”复选框即可解决问题。

FragmentActivity can not be tested via ActivityInstrumentationTestCase2 给我很大的帮助

关于android - IntelliJ 上的 Android 测试中源文件的 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14623692/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com