有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaTomcatServlet4.0JAXRS返回404错误

在Eclipse中使用Tomcat9.0.31运行时,我已经失去了开发/测试RESTful JAX-RSWeb服务的能力。当我在eclipse中启动tomcat并尝试点击我编写的许多JAX-RSWED服务中的任何一个时,我收到一个404错误。对于这种类型的测试,我通常使用Fiddler点击服务URL

我已经阅读了这里的一些帖子,包括但不限于:

还有更多。大多数响应似乎都是针对Servlet2.5和更早版本的,并提到在web中使用servlet描述。xml

我最近的服务都有注释,我不需要向web添加任何内容。xml

我的网络。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">

我尝试过的事情很多。例如,我使用OpenJDK 13作为我的java SDK,所以我将eclipse中的默认JRE更改为OpenJDK 8(1.8),这没有帮助。我已经完成了许多项目清理/构建和maven项目更新

我读过并且已经知道的一件事是在web中将metadata-complete属性设置为false。xml头。已经设置好了,所以我将其删除。还是不行。我尝试在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

我已经在网上发布了。上面的xml头

波姆。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协议启动消息之后的启动输出上列出的每个服务:

enter image description here

我被卡住了,我需要检查最近对另一个类的更改,该类在服务器上不工作

如何恢复此功能


共 (1) 个答案

  1. # 1 楼答案

    问题是没有为项目选择JAX-RS项目方面

    对于那些遇到相同或类似问题的人,假设使用eclipse,在项目浏览器中单击鼠标右键,然后选择“属性”。然后从属性的左侧面板中选择“项目面”。最后,选中“JAX-RS(RESTWeb服务)”并将版本下拉列表设置为适当的实现版本。对于我的项目,我使用版本2.1