首页 > 解决方案 > 找不到类 org.glassfish.jersey.internal.inject.Binder

问题描述

我有一个现有的 SOAP Web 服务项目,我想扩展它以便它也支持 RESTful 服务。

当我创建一个空的 Web 项目并使用此处找到的教程按照说明进行操作时,一切正常,但在我现有的项目中出现错误java.lang.ClassNotFoundException: org.glassfish.jersey.internal.inject.Binder。我确保将所有库放在 WEB-INF 文件夹中并包含它们,就像我对测试项目所做的那样。

这是我的 web.xml 的一部分:

<servlet>
    <servlet-name>XFireServlet</servlet-name>
    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>


<servlet> 
  <servlet-name>Jersey RESTful Application</servlet-name> 
  <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
  <init-param> 
    <param-name>jersey.config.server.provider.packages</param-name> 
    <param-value>com.rest</param-value> 
  </init-param> 
</servlet> 
<servlet-mapping> 
  <servlet-name>Jersey RESTful Application</servlet-name> 
  <url-pattern>/rest/*</url-pattern> 
</servlet-mapping>

这是我的 UserService 类:

@Path("/UserService") 
public class UserService {
    User user = new User();

    @GET
    @Path("/users")
    @Produces(MediaType.TEXT_PLAIN)
    public String getUsers() {
        return user.getHello();
    } 
}

当我尝试使用带有 URL 的 Postman 调用它时出现错误:http://localhost:8080/project/rest/UserService/users

我无法在另一个项目中重现它。我尝试使用相同的库和相同的 Java EE 版本(7.0),它工作得很好。

标签: javaresttomcatjerseytomcat8

解决方案


推荐阅读