[英]Java web application does not start on Tomcat 8.5 or 9 using Jersey 2.26
I'm trying to deploy a simple Java (1.8) web application to Tomcat 9 (also tried on 8.5) using Jersey 2.26 built using Maven. 我正在尝试使用使用Maven构建的Jersey 2.26将简单的Java(1.8)Web应用程序部署到Tomcat 9(也在8.5上尝试过)。 I do not see any errors while building but deploying to Tomcat, the application does not start.
在构建但部署到Tomcat时,我没有看到任何错误,该应用程序无法启动。
I was referring to the options as listed here https://jersey.github.io/documentation/latest/deployment.html#deployment.servlet.3 我指的是这里列出的选项https://jersey.github.io/documentation/latest/deployment.html#deployment.servlet.3
Errors in Tomcat logs/catalina.out Tomcat logs / 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 的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 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>
Servlet class Servlet类
@Path("/dbservice")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class MongoServlet {
What am i missing? 我想念什么?
Looks like a missing jar. 看起来像一个缺少的罐子。 Actually the stacktrace message is pretty clear on the fact that
javax/ws/rs/core/Application
cannot be found. 实际上,在
javax/ws/rs/core/Application
的情况下,stacktrace消息非常清楚。
Add this dependency to your pom.xml
clean and rebuild the project and I suppose you should be OK. 将此依赖项添加到
pom.xml
clean中,然后重新生成项目,我想您应该可以。
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1</version>
</dependency>
Like @Aris_Kortex mentioned the issue was with missing 就像@Aris_Kortex提到的那样,问题一直缺失
The solution was to remove <scope>provided</scope>
from the maven dependency in pom.xml 解决方案是从pom.xml中的maven依赖项中删除
<scope>provided</scope>
The dependency in my pom.xml before 我之前的pom.xml中的依赖项
<!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
Corrected dependency 纠正依赖性
<!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1</version>
</dependency>
Tomcat does not provide the jar and has to explicitly added by the application. Tomcat不提供jar,必须由应用程序显式添加。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.