我对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?
答案 0 :(得分:5)
假设您使用的是当前的R17工具,那么......
我尝试将hamcrest-all-1.2.jar添加为库和外部jar。两种方式都有相同的结果,代码在IDE中看起来很好,但无法在运行时加载类。
步骤1:撤消所有这些。
步骤2:在项目的根目录中创建一个libs/
目录。
步骤3:将您的JAR放入libs/
。
你完成了。这曾经是命令行构建的配方,但它现在也是基于Eclipse的构建的配方。