Eclipseの下でMavenを使用して構築された2つのAndroidのプロジェクトがあります。1つはプロジェクト自体であり、もう1つはテストプロジェクトです。
プロジェクトをそのまま実行するAndroid JUnit Test
と、エラーがスローされます。
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
Webを掘り下げると、同様の問題android-support-v4.jar
が解決策であることがわかりました。これは、テストプロジェクトから重複を削除することでした。ただし、これは依存関係の継承によるMavenのプロジェクトには適用されません。
それを機能させる唯一の方法は、起動する前に、テストプロジェクトのビルドパスからMaven Dependencies
ライブラリを手動で削除しProject Reference
、ターゲットのAndroidプロジェクトに明示的に追加する必要があることでした。
¿誰かがこのハックなしでそれを機能させる方法を知っていますか?
これが私のプロジェクトの関連する断片ですpom.xml
:
<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>