0

我已将rest-assured-2.2.0.jar放在我的 Eclipse 工作区(用于 Android 应用程序)中,并将其作为引用库添加到项目的构建路径中。然后我导入:

import com.jayway.restassured.RestAssured;
import static com.jayway.restassured.RestAssured.*;
import static com.jayway.restassured.matcher.RestAssuredMatchers.*;
import static org.hamcrest.Matchers.*;

但是,如果我这样做,RestAssured.given();我会得到 Caused by: java.lang.NoClassDefFoundError: com.jayway.restassured.internal.ResponseParserRegistrar

如果我查看 jar 文件,我可以在正确的位置找到一个 ResponseParserRegistrar.class 文件,所以它确实存在。

如果我尝试导入它,它不会抱怨:

import com.jayway.restassured.internal.ResponseParserRegistrar;

但它仍然给出错误。

我忘记了什么或做错了什么?

编辑

现在,我使用以下 MainActivity 创建了一个空白的新 Android 应用程序:

package com.example.testrestassured;

import com.example.testrestassured.R;
import android.app.Activity;
import android.os.Bundle;
import com.jayway.restassured.RestAssured;
import com.jayway.restassured.RestAssured.*;
import com.jayway.restassured.internal.ResponseParserRegistrar;
import com.jayway.restassured.matcher.RestAssuredMatchers.*;

public class MainActivity extends Activity{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        RestAssured.given();
    }
}

该项目只有一个引用库:rest-assured-2.2.0.jar(正确拼写)。

我仍然遇到同样的问题

E/AndroidRuntime(13142): Caused by: java.lang.NoClassDefFoundError: com.jayway.restassured.internal.ResponseParserRegistrar

编辑

更改为 rest-assured-2.3.0.jar (新版本)并添加 json-schema-validator-2.3.0.jar 并且它的依赖项的大列表也没有解决它。我试图找到运行时类路径,但在ADT的菜单中找不到它。

4

2 回答 2

1

确保您没有多个版本的 jar。这在使用 Maven 的项目中很常见,当父项目具有旧版本的库时。

如果您告诉我们更多有关您的配置的信息,则尝试查找原因会更容易。

于 2014-01-23T15:56:43.737 回答
0

如果 Java 虚拟机或 ClassLoader 实例尝试加载类的定义(作为正常方法调用的一部分或作为使用 new 表达式创建新实例的一部分)并且没有类的定义可以被发现。

现在在上面,当您拥有 MAVEN 项目时,您可能没有在 pom.xml 中添加您的 rest-assured-2.2.0.jar 的依赖项。

如果您正在构建 Eclipse RCP 或 Eclipse 插件。

如果是,您应该将 rest-assured-2.2.0.jar 放在插件依赖项下。转到 plugin.xml, Runtime 并将 rest-assured-2.2.0.jar 放在类路径中。

此外,作为交叉检查,请检查您在任何地方使用的拼写名称是否相同。

于 2014-01-23T16:35:52.333 回答