在eclipse中使用tomcat9.0.31运行时,我已经失去了开发/测试restfuljax-rsweb服务的能力。当我在eclipse中启动tomcat并尝试点击我编写的众多jax-rs-wed服务中的任何一个时,我收到一个404错误。对于这种类型的测试,我通常使用fiddler来点击服务url
我在这里读了很多帖子,包括但不限于:
tomcat上的jax-rs总是返回404
404在jax-rs上在tomcat上,mbeans?
jersey jax rs应用程序返回404
还有更多。大多数响应似乎是针对Servlet2.5和更早版本的,并提到使用web.xml中的servlet描述。
我最近的服务都是带注解的,我不需要向web.xml添加任何内容。
我的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"
xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
我试过的东西很多。例如,我使用openjdk13作为我的javasdk,所以我将eclipse中的默认jre更改为openjdk8(1.8),这没有帮助。我已经做了很多项目清理/构建和maven项目更新。
有一件事我读过并且已经知道了,那就是设置 metadata-complete
属性设置为false。已经设置好了,所以我把它删除了。还是不行。我试着在pom中升级我的jersey bundle依赖版本,没用。
我确实尝试过重写getclasses()方法
@Override
public Set< Class< ? > > getClasses() {
final Set< Class< ? > > returnValue = new HashSet< Class< ? > >();
returnValue.add( TestApi.class );
return returnValue;
}
这也不起作用。注意,每次更改之后,我都会在eclipse中停止并启动tomcat服务器。
以下是相关信息:
eclipse项目方面:
动态web模块4.0
java 1.8版
javascript 1.0版
我已经发布了上面的web.xml标题
pom.xml文件:
<dependency>
<groupId>org.glassfish.jersey.bundles</groupId>
<artifactId>jaxrs-ri</artifactId>
<version>2.32</version> <-- Note I was using version 2.29 this is the version I upgraded too.
</dependency>
应用程序子类:
package com.company;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath ( "resources" )
public class ApplicationConfig extends Application {}
测试等级:
package com.company;
import java.util.Date;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path ( "test" )
public class TestApi {
@GET
@Path ( "datetime" )
public String getDate() {
return new Date().toString();
}
}
当我运行我的web应用程序时,我希望能够通过调用http://localhost:8080/resources/test/datetime。但是我得到一个404错误,消息只是“请求的资源在这个服务器上找不到”。此错误最常见的原因是键入错误的url或断开的链接”。eclipse控制台中没有错误。
通常,当tomcat启动时,我会看到在8080协议启动消息之后的启动输出中列出的每个服务:
我被卡住了,我需要检查最近对另一个类的更改,这个类在服务器上不起作用。
如何恢复此功能?
暂无答案!
目前还没有任何答案,快来回答吧!