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:撤消所有这些。

libs/步骤#2:在项目的根目录中创建一个目录。

第 3 步:将您的 JAR 放入libs/.

你完成了。这曾经只是命令行构建的秘诀,但现在它也是基于 Eclipse 的构建的秘诀。

于 2012-04-10T20:00:35.047 回答