繁体   English   中英

JBoss EAP中的Rest Client的NoClassDefFoundError

[英]NoClassDefFoundError for Rest Client in Jboss EAP

我使用REST客户端生成EAR示例应用程序,并将其部署在我的笔记本上(具有独立配置并为公共域绑定了任意地址的JBoss EAP 6.3.0)。 以下代码负责产生REST响应:

@Stateless
@Path("/users/list")
public class ListUsersREST {

    @GET
    @Produces("text/html")
    public String getUsersList() {
        return "TEST";
    }

}

通过POSTMAM可以正常工作。 我的示例的这一部分可能不需要任何帮助。

现在...我正在部署在桌面上的第二个应用程序(JBoss和配置相同)。 我对包含JAVAX.WS.RS。* API的JAVAEE7 API有依赖性。 我正在尝试连接到此REST客户端并获得响应(例如通过POSTMAN):

@Stateless
@Local(EJBTest.class)
public class EJBTestBean implements EJBTest {

    @Override
    public void getRestResponse() {
        Client client = ClientBuilder.newClient();
        WebTarget target = client.target("http://192.168.0.2:8080/demo/rest/users/list");
        Response response = target.request(MediaType.TEXT_HTML).get();

        String value = response.readEntity(String.class);
        int status = response.getStatus();
        response.close();
        client.close();
        System.out.println("REST RESPONSE: " + value);
        System.out.println("REST Status: " + status);
    }

}

...而这段代码不起作用。 我不知道为什么

我一直都在遇到同样的异常...

造成原因:java.lang.NoClassDefFoundError:javax / ws / rs / client / ClientBuilder

我在Google上搜索,并尝试了许多解决方案,例如

  1. 向所有可重复使用的jar添加依赖项(WEB-INF / lib)
  2. 向$ {JBOSS_HOME} / standalone / lib添加reasteasy罐
  3. 更改standalone.xml
  4. 使用standalone-full.xml配置运行jboss

但没有效果...请告诉我发生了什么。 我究竟做错了什么?

JBoss EAP 6是Java EE 6,并且您正在部署需要Java EE 7的应用程序。JAX -RS客户端仅在Java EE 7中。如果您在WildFly上尝试了部署,那么它应该可以工作。

您的依赖项似乎无法正常工作的原因是服务器将让我们将其作为自己的JAX-RS依赖项。 您可能会从您的部署中排除JAX-RS子系统,这可能会起作用。 但是,可能只有客户端才能使用JAX-RS端点。

最好的选择是使用Java EE 7容器,即WildFly 8。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM