我已经开发一个应用程序有一段时间了(over here),我正试图在我的安卓设备和模拟器上做这两个测试。
目前我已经在Travis上建立了一个构建,所有的测试都运行得很好。此外,我还设置了一个本地模拟器,它可以很好地运行所有东西。我的物理设备(Moto X)也运行得很好,但只有当它在Dalvik上时。一旦我切换到ART,我就会得到以下错误:
11-11 15:28:54.013 6259-6259/org.bspeice.minimalbible E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: org.bspeice.minimalbible, PID: 6259
java.lang.NoClassDefFoundError: org.jdom2.xpath.jaxen.JDOMCoreNavigator
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:305)
at android.test.ClassPathPackageInfoSource.createPackageInfo(ClassPathPackageInfoSource.java:88)
at android.test.ClassPathPackageInfoSource.access$000(ClassPathPackageInfoSource.java:39)
at android.test.ClassPathPackageInfoSource$1.load(ClassPathPackageInfoSource.java:50)
at android.test.ClassPathPackageInfoSource$1.load(ClassPathPackageInfoSource.java:47)
at android.test.SimpleCache.get(SimpleCache.java:31)
at android.test.ClassPathPackageInfoSource.getPackageInfo(ClassPathPackageInfoSource.java:72)
at android.test.ClassPathPackageInfo.getSubpackages(ClassPathPackageInfo.java:48)
at android.test.ClassPathPackageInfo.addTopLevelClassesTo(ClassPathPackageInfo.java:61)
at android.test.ClassPathPackageInfo.getTopLevelClassesRecursive(ClassPathPackageInfo.java:55)
at android.test.suitebuilder.TestGrouping.testCaseClassesInPackage(TestGrouping.java:156)
at android.test.suitebuilder.TestGrouping.addPackagesRecursive(TestGrouping.java:117)
at android.test.suitebuilder.TestSuiteBuilder.includePackages(TestSuiteBuilder.java:102)
at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:366)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4400)
at android.app.ActivityThread.access$1500(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)在here上有一个完整的会话跟踪,如果这有帮助的话。
所以我的问题是:这是ART的问题而不是Dalvik的问题吗?我根本没有改变应用程序的构建过程,唯一有影响的变量似乎是Dalvik/ART。应用程序本身运行良好,只有测试有错误。
发布于 2015-04-08 14:57:50
看起来ART找不到你的类,抛出了ClassNotFoundException。我对java或cpp不太在行,但在我阅读的有关ART的文章中,它对语法的要求要严格得多。Dalvik会接受点或斜杠作为分隔符,艺术只接受斜杠等。我有一堆东西在Dalvik上运行得很好,但在ART/Android-5.0.x上摔倒死了。你自己解决这个问题了吗?在接下来的几周里,我将尝试确定我的应用程序出了什么问题,但我怀疑是ART正在进行的更激进的内存管理垃圾收集,而不是Dalvik。如果你解决了你的问题,请张贴说明你做了什么。
https://stackoverflow.com/questions/26874013
复制相似问题