java - Java Web 应用程序无法在使用 Jersey 2.26 的 Tomcat 8.5 或 9 上启动
问题描述
我正在尝试使用使用 Maven 构建的 Jersey 2.26 将一个简单的 Java (1.8) Web 应用程序部署到 Tomcat 9(也在 8.5 上尝试过)。我在构建但部署到 Tomcat 时没有看到任何错误,应用程序无法启动。
我指的是此处列出的选项https://jersey.github.io/documentation/latest/deployment.html#deployment.servlet.3
Tomcat 日志/catalina.out 中的错误
17-Aug-2018 21:46:06.062 SEVERE [http-nio-8080-exec-39] org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive [/Users/konathal/Software/apache-tomcat-9.0.10/webapps/jaq-stack-webapp.war]
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [
Caused by: java.lang.NoClassDefFoundError: javax/ws/rs/core/Application
at org.glassfish.jersey.servlet.init.JerseyServletContainerInitializer.addServletWithDefaultConfiguration(JerseyServletContainerInitializer.java:240)
pom.xml
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.26</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.26</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>2.26</version>
</dependency>
web.xml
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
小服务程序类
@Path("/dbservice")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class MongoServlet {
我错过了什么?
解决方案
看起来像一个丢失的罐子。实际上,堆栈跟踪消息非常清楚地说明了javax/ws/rs/core/Application
无法找到的事实。
将此依赖项添加到您的pom.xml
清理并重建项目中,我想您应该没问题。
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1</version>
</dependency>
推荐阅读
- python - (C++/Python) 捕获不带插入符号的窗口截图
- c# - 发布没有 EXE 和运行时的 .NET Core 应用程序
- bash - 用于 Mac OS 的 cat -E 模拟
- typescript - 仅 TypeScript 数组过滤器 RegExp
- spring-boot - Kotlin,Spring Boot,JPA - 获取通用枚举的值 (E.valueOf(stringValue))
- core-web-vitals - 尽管 PSI 结果超过 90%,但核心网络生命体征仍失败
- flutter - 错误:颤振中的“手势捕获异常”
- ruby-on-rails - 如何在 rails 和 graphql 的以下代码中解决此错误
- c# - 在 IQueryable 上返回 204 状态代码
Web API 操作 - python - Telethon 不代表客户端通过代理连接