android - 使用了不同的 Landroid/support/v4/app/FragmentActivity;预验证期间 : Android + Fragments + JUnit + Maven

标签 android eclipse maven junit android-support-library

我有两个在 Eclipse 下使用 Maven 构建的 Android 项目。一个是项目本身,另一个是测试项目。

当我将项目作为 Android JUnit 测试 运行时,它抛出错误:

java.lang.RuntimeException: Exception during suite construction
Caused by: java.lang.reflect.InvocationTargetException
Caused by: java.lang.NoClassDefFoundError: com.some.TestClass

查看 Logcat 我发现了这个错误的根本原因是:

Lcom.some.TestClass; had used a different Landroid/support/v4/app/FragmentActivity; during pre-verification

在网络上挖掘我发现了一个 similar issue解决方案是从测试项目中删除重复的 android-support-v4.jar。但由于依赖继承,这不适用于Maven的项目。

我发现让它工作的唯一方法是在启动之前我必须手动从测试项目的构建路径中删除 Maven Dependencies 库并显式添加 Project Reference 到目标 Android 项目。

¿有没有人知道在没有这个hack的情况下让它工作的方法?

这是我项目的 pom.xml 中的相关 fragment :

<groupId>com.some</groupId>
<artifactId>project</artifactId>
<packaging>apk</packaging>
...
<dependencies>
    ...
    <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>support-v4</artifactId>
    </dependency>
    ...
</dependencies>

和测试项目pom.xml:

<groupId>com.some</groupId>
<artifactId>project-test</artifactId>
<packaging>apk</packaging>
...
<dependencies>
    ...
    <dependency>
        <groupId>com.some</groupId>
        <artifactId>project</artifactId>
        <packaging>apk</packaging>
    </dependency>

    <dependency>
        <groupId>com.some</groupId>
        <artifactId>project</artifactId>
        <packaging>jar</packaging>
    </dependency>
    ...
</dependencies>

最佳答案

最近解决了好像是同一个问题。这不是特定于 android-support-library。请查看this answer .

关于android - 使用了不同的 Landroid/support/v4/app/FragmentActivity;预验证期间 : Android + Fragments + JUnit + Maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14026748/

相关文章:

android - 在替换 Fragment 时在双旋转后恢复 Fragment 时清空 savedInstanceState Bundle

android - React-Native Android - 找不到 com.android.tools :common

java - 可以从传递 String 参数的资源中加载 R.drawable 吗?

eclipse - Eclipse+Pydev 中转到定义的[快捷方式/其他方式]是什么

maven - 试图让Maven部署到Artifactory Server

java - Spring 3.0——无法为 XML 模式 namespace 上下文找到 Spring NamespaceHandler

java - 执行目标 wildfly swarm 插件时出现问题,API 不兼容,java.lang.AbstractMethodError

android - 在 Android 中为包设置别名

Eclipse JFace 向导以编程方式跳转到下一页

java - Eclipse + Maven 和隐藏的 ${basedir}/target/classes 文件夹?