gpt4 book ai didi

javax.ws.rs.NotFoundException : Could not find resource for full path Error Occures

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:32 26 4
gpt4 key购买 nike

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

当我运行我的应用程序时,出现以下错误

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文件(我只加了主要部分)

<repositories>
<repository>
<id>JBoss repository</id>
<url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.9.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-servlet-initializer</artifactId>
<version>3.0.9.Final</version>
</dependency>
</dependencies>

这是我的web.xml文件

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">


<display-name>RemoteQuartzScheduler</display-name>

<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>


<!-- this should be the same URL pattern as the servlet-mapping property -->
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>

<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
</listener-class>
</listener>

<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
</servlet>

这是我的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,其 url 映射为 /path/*。这是在 JAX-RS 规范中指定的。

您可以在此处的 2.3.2 Configuration - Servlet 部分中查看有关此部署选项以及其他选项的更多信息.这是 1.1 规范(您使用的是 2.0),但部署选项相似。我只是找不到 2.0 的 html 链接。您可以从 here 下载 pdf。 .

您还可以阅读有关使用 Resteasy 进行部署的更多信息 here in the documentation .

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

关于javax.ws.rs.NotFoundException : Could not find resource for full path Error Occures,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28535808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com