尝试使用 IntelliJ 作为 IDE 使用 Jersey 和 Tomcat 10 做一个 Hello World。不幸的是,我会得到一个 404 - 似乎 servlet 没有加载。看了几个教程,找不到原因。此外,我在 web.xml 中收到一条奇怪的错误消息...
pom.xml
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
web.xml(xml 文件是强制性的,我不能使用 ApplicationConfig 类)
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.myapp.hello</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>
另外,在这里我servlet-class
在线收到此错误消息:'org.glassfish.jersey.servlet.ServletContainer' is not assignable to 'javax.servlet.Servlet,jakarta.servlet.Servlet'
我只发现了https://youtrack.jetbrains.com/issue/IDEA-86833问题,但似乎已解决。
控制器/端点
package com.myapp.hello;
@Path("/hello")
public class DataController {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayPlainTextHello() {
return "Hello Jersey Plain";
}
}
这应该部署 servlet 并通过具有以下 url 的 GET 请求使其可访问:http://localhost:8080/app/api/hello - 但得到一个 404 代替...
我在这里做错了什么?代码看起来不错,我在服务器日志中看不到任何内容。
感谢您的任何投入!