2014-10-06 116 views
0

我使用REST客户端生成EAR示例应用程序并将其部署到我的笔记本上(JBoss EAP 6.3.0,具有独立配置并绑定了公有领域的任何地址)。以下代码是生成REST响应的责任:Jboss EAP中Rest客户端的NoClassDefFoundError

@Stateless 
@Path("https://stackoverflow.com/users/list") 
public class ListUsersREST { 

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

} 

它通过POSTMAM正常工作。我的例子中的这部分可能不需要任何帮助。

现在...我在我的桌面上部署第二个应用程序(JBoss和配置相同)。我拥有包含JAVAX.WS.RS。* API的JAVAEE7 API的依赖关系。我试图(通过邮差等)连接到此REST客户端,并得到响应:

@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 /客户/ ClientBuilder

我正在寻找在谷歌,并试图像

  1. 将依赖条件很多解决方案都reasteasy罐子aplication(WEB-INF/lib目录)
  2. 加入reasteasy罐子到$ {JBOSS_HOME} /短吨andalone/lib目录
  3. 改变standalone.xml
  4. 运行JBoss使用独立-full.xml配置

,但没有效果......请告诉我是怎么回事。我究竟做错了什么?

+0

这可能(希望)帮助:http://stackoverflow.com/questions/24765713/classnotfoundexception-javax-ws-rs-client-clientbuilder – hooknc 2014-10-06 23:03:15

回答

0

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

你依赖的原因似乎没有奏效的原因是服务器将我们自己的JAX-RS依赖关系。您可能会从可能有效的部署中排除JAX-RS子系统。但是,您可能无法使用JAX-RS端点,只能使用客户端。

尽管如此,最好的办法是使用WildFly 8的Java EE 7容器。