4

Android インストルメンテーション テストの実行中に IllegalAccessError が発生します。
これは Logcat の出力です。

java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation

これは私のセットアップです:
TestProjecttests UnderTestProject、ビルドパス (「プロジェクト」タブ) に含まAnotherProjectれ、「注文とエクスポート」タブからエクスポートします。テスト対象のクラスは に属しAnotherProjectます。

ビルドパスを構成するために、こちらのスタックオーバーフローの質問の提案に従いました。

ビルドは、コマンド ラインから Maven を使用して行われています。依存関係として、とAnotherProjectの両方の pom ファイルにあります。これはまだエラーが発生する理由ですか? どうすればこれを修正できますか? の pom のみに含めてのpom に含めますか?TestProjectUnderTestProjectAnotherProjectUnderTestProjectUnderTestProjectTestProject

Eclipseのビルドパスはmavenのpomとどのように結びついていますか?

私はこれについて明確ではありません。どんな助けでも大歓迎です。

ありがとう!


次のことを試しましたが、まだ問題が発生しています。

  1. の pomAnotherProjectから削除され、追加されました。TestProjectUnderTestProject
  2. このスレッドのアドバイスに従いました。forを追加してもビルドUnderTestProjectしません。<scope>provided</scope>AnotherProject

この時点で立ち往生しています。抜け道があれば教えてください。

ありがとう!

4

3 に答える 3

1

私も同じ問題を抱えていました。私のためにそれを修正するには、メインアプリの pom.xml のライブラリ依存関係をテストアプリの pom.xml に追加する必要がありましたが<scope>provided</scope>、それらに追加しました。

したがって、MyApp pom.xmlに次の依存関係があるとします。

<dependency>
    <groupId>com.nineoldandroids</groupId>
    <artifactId>library</artifactId>
    <version>2.4.0</version>
</dependency>

これをMyAppTest pom.xmlに追加する必要がありました。

<dependency>
    <groupId>com.nineoldandroids</groupId>
    <artifactId>library</artifactId>
    <version>2.4.0</version>
    <scope>provided</scope>
</dependency>
于 2013-02-01T18:16:20.250 に答える
1

まず、こちらの android-maven-plugin wiki ページのライブラリセクションに従ってください。

プロジェクトのセットアップにライブラリが含まれている場合、それらも <scope>provided</scope> として追加する必要があります。そうしないと、テストに追加され、エラー «Class ref in pre-verified class resolve to予期しない実装».

... ... ...

バグ # 142 に注意してください。この時点では、<packaging>jar</packaging> を含むライブラリのみが機能します。

次に、UnderTestProject を右クリックし、[ビルド パス] -> [ビルド パスの構成] をクリックし、[注文とエクスポート] タブで [Maven 依存関係] にチェックを入れます。ここに画像の説明を入力

これは私にとってはうまくいきます。

于 2012-02-14T00:52:24.670 に答える
0

これが Eclipse のみの問題なのか、プロジェクトが Maven でも ( android-maven-plugin. 私の場合、両方とも失敗します。理由: からの推移的な依存関係UnderTestProject.apkも、クラスの問題をTestProject.apk引き起こす原因になります。pre-verified私にとっての解決策は、これを私TestProjectの pom に適用することでした:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>UnderTestProject</artifactId>
    <version>1.0-SNAPSHOT</version>
    <type>apk</type>
    <exclusions>
        <exclusion>
            <groupId>*</groupId>
            <artifactId>*</artifactId>
        </exclusion>
    </exclusions>
</dependency>

この方法でワイルドカードを使用すると、ここで説明したように、警告が表示されますが、うまく処理されます ( でテスト済みMaven 3.1.1)。

于 2013-11-20T18:12:59.863 に答える