3

私はAndroidに少し慣れていないので、テストプロジェクトにHamcrestマッチャーを含める方法について何時間も苦労しています。コードはEclipseで実行されるはずであり、エラーは示されていません。しかし、テストを実行すると、Hamcrestクラスがロードされていません。「NoClassDefFoundError:org.hamcrest.Matchers」が表示されます。

私は過去3時間、フォーラムを調べて、誰かが以前にこれに遭遇したことがあると考えましたが、運がありませんでした。IDEはクラスを見ることができるので、私は愚かなことをしているに違いありませんが、ランタイムはそうではありません。

テストソースは次のとおりです。

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import org.hamcrest.Matcher;
import android.test.InstrumentationTestCase;

public class AppDescLoaderTest extends InstrumentationTestCase {

  public void testHamcrest() {
    assertThat(3, equalTo(3));
  }
}

hamcrest-all-1.2.jarをライブラリおよび外部jarとして追加してみました。どちらの方法でも同じ結果になります。コードはIDEで正常に見えますが、実行時にクラスをロードできません。

私の理論では、hamcrest.jarは.apkファイルと一緒に使用されないため、そのクラスはロードされません。それが本当なら、どうすればそれを.apkファイルと一緒にAndroidにプッシュすることができますか?

4

1 に答える 1

6

現在の R17 ツールを使用していると仮定すると、次のようになります。

hamcrest-all-1.2.jar をライブラリおよび外部 jar として追加しようとしました。どちらの方法でも同じ結果になります。コードは IDE では問題なく見えますが、実行時にクラスをロードできません。

ステップ #1: すべて元に戻します。

ステップ #2:libs/プロジェクトのルートにディレクトリを作成します。

ステップ #3: JAR を に入れますlibs/

これで完了です。これは、以前はコマンドライン ビルドのみのレシピでしたが、現在は Eclipse ベースのビルドのレシピでもあります。

于 2012-04-10T20:00:35.047 に答える