Java 运行Jersey REST服务时未找到提供程序类

Java 运行Jersey REST服务时未找到提供程序类,java,rest,jersey,jax-rs,Java,Rest,Jersey,Jax Rs,我对Java非常陌生,我已经按照教程创建了JAX-RS服务,我所做的一切都是按照教程进行的,但无法让它工作。我已附上屏幕截图和日志 WEB.XML <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="h

我对Java非常陌生,我已经按照教程创建了JAX-RS服务,我所做的一切都是按照教程进行的,但无法让它工作。我已附上屏幕截图和日志

WEB.XML

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>com.duo.test</display-name>
 <servlet>
      <servlet-name>Jersey Rest Service</servlet-name>
      <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
      <init-param>
          <param-name>com.sun.jersey.config.property.packages</param-name>
          <param-value>com.duo.test</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
      <servlet-name>Jersey Rest Service</servlet-name>
      <url-pattern>/api/*</url-pattern>
  </servlet-mapping>  
</web-app>
输出:
URL映射错误,应该是

<servlet-mapping>
      <servlet-name>Jersey Rest Service</servlet-name>
      <url-pattern>/v1/*</url-pattern>
</servlet-mapping>

其中一个问题,我发现有错误

com.sun.jersey.api.core.ScanningResourceConfig init INFO: No provider classes found.
正在Rest服务类中使用Lambda表达式(Java8)。 如果在下面的web.xml文件中指定的包中使用lambda,则Jersey无法扫描批注:

  <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>com.duo.test</param-value>
  </init-param>

com.sun.jersey.config.property.packages
com.duo.test
此问题的解决方案是删除指定包中任何类中的Lambda


注意:这可能只是Jersey 1.x的一个问题,我还没有尝试使用Jersey 2.x。删除Lambda帮助我暂时解决了这个问题。

当我遇到这个问题时,它似乎正在将jersey从1.0.2升级到1.1x,日志会说

INFO: Root resource classes found:
  class org.x.y.MyClass
No provider classes found.
然后一切都将是404,即使它说webapp成功部署,但根本无法实现

原来我的

<servlet-mapping>
<servlet-name>Webapp Human name</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

Webapp人名
/
web.xml
中,对于新版本的jersey来说已经不够好了,它需要改进

/*


参考:

看看这个。将@Path(“/v1/status/*”)替换为@Path(“/v1/status/”)/“/”不起作用,需要是“/”?!我没有收到。@w35l3y哦,应该是
/*
更新的,谢谢你的提示。
  <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>com.duo.test</param-value>
  </init-param>
INFO: Root resource classes found:
  class org.x.y.MyClass
No provider classes found.
<servlet-mapping>
<servlet-name>Webapp Human name</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>