javax.ws.rs.NotFoundException:无法找到完整路径错误发现的资源

我在这里几次发现同样的问题,但我找不到答案。

当我运行我的应用程序时,我得到以下错误

javax.ws.rs.NotFoundException: Could not find resource for full path: http://localhost:8080/RemoteQuartzScheduler/rest/TestClass/hello at org.jboss.resteasy.core.registry.ClassNode.match(ClassNode.java:73) at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48) at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:444) at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:234) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:171) at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) 

这是项目的pom文件(我只添加了主要部分)

   JBoss repository https://repository.jboss.org/nexus/content/groups/public-jboss/     junit junit 3.8.1 test   org.jboss.resteasy resteasy-jaxrs 3.0.9.Final   org.jboss.resteasy resteasy-servlet-initializer 3.0.9.Final   

这是我的web.xml文件

  RemoteQuartzScheduler  resteasy-servlet /rest/*    resteasy.servlet.mapping.prefix /rest    org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap    resteasy-servlet  org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher   

这是我的Test.java

 @Path("/TestClass") public class Test implements Serializable{ private static final long serialVersionUID = -262701666015379272L; @GET @Path("/hello") public Response heloMessage() { String result = "Hello Word!!!!!!!!!"; return Response.status(200).entity(result).build(); } } 

请告诉我我哪里做错了? 提前致谢

我没有机会测试你的版本(使用web.xml),说实话,当我使用Resteasy时,我 xml的工作量不大,所以我不会试图解释什么是错的(如果有的话) )使用web.xml。

但是在使用javax.xs.rs.core.Application子类时,我们可以定义@ApplicationPath("/path")注释。 这为我们的JAX-RS应用程序定义了一个servlet,其中包含/path/*的url映射。 这在JAX-RS规范中指定。

您可以在2.3.2配置 – Servlet一节中看到有关此部署选项以及其他选项的更多信息。 这是1.1规范(您使用的是2.0),但部署选项类似。 我只是找不到2.0的HTML链接。 你可以从这里下载pdf。

您还可以在文档中阅读有关Resteasy部署的更多信息。

但基本上,此部署选项的作用是扫描应用程序的@Provider@Provider等注释。 原因是JAX-RS将首先分别在重写的getClasses()getSingletons()查找类和对象。 如果然后返回空集,则告诉JAX-RS进行扫描(根据规范)。