【问题标题】:NoClassDefFoundError ObjenesisStd on Android API 19Android API 19 上的 NoClassDefFoundError ObjenesisStd
【发布时间】:2017-03-02 01:36:54
【问题描述】:

我仅在运行 API v19 的模拟器上进行仪器测试时出现以下崩溃。如果我在较新的版本上运行一切正常。

03-01 20:26:18.781 2878-2878/? E/MonitoringInstrumentation:异常 遇到:线程[main,5,main]。将线程状态转储到输出 并渴望峡湾。 java.lang.NoClassDefFoundError: org.objenesis.ObjenesisStd 在 org.mockito.internal.creation.jmock.ClassImposterizer.(ClassImposterizer.java:36) 在 org.mockito.internal.creation.jmock.ClassImposterizer.(ClassImposterizer.java:29) 在 org.mockito.internal.util.MockCreationValidator.isTypeMockable(MockCreationValidator.java:17) 在 org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:21) 在 org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:133) 在 org.mockito.internal.creation.MockSettingsImpl.confirm(MockSettingsImpl.java:127) 在 org.mockito.internal.MockitoCore.mock(MockitoCore.java:50) 在 org.mockito.Mockito.mock(Mockito.java:1243) 在 org.mockito.Mockito.mock(Mockito.java:1120)

问题出在这一行:

java.lang.NoClassDefFoundError: org.objenesis.ObjenesisStd

我的应用程序是多 dex,我正在使用 dexmaker-mockito 进行 androidTestCompile。我完全不知所措,为什么这只在较旧的 API 上中断。当我在我的项目中添加另一个模块时开始发生这种情况,这是一个不依赖于 mockito 的纯 java 模块。

【问题讨论】:

    标签: android mockito dexmaker


    【解决方案1】:

    这个异常(ClassNotFoundException)告诉你一个运行时的unmet依赖:JVM需要加载一个类;类路径中不存在。

    这里是 Mockito 需要 Objenesis。通常,当您使用像 maven 这样的系统并为 Mockito 提供正确的依赖关系时,应该自动提取该库。

    【讨论】:

    • 当我通过 Gradle 输出依赖项时,Objenesis 是 androidTestCompile 的依赖项树中的列表。真正奇怪的是,这只发生在 Android API v19 及以下设备上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多