簡體   English   中英

Java Web應用程序無法使用Jersey 2.26在Tomcat 8.5或9上啟動

[英]Java web application does not start on Tomcat 8.5 or 9 using Jersey 2.26

我正在嘗試使用使用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 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

 <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>

Servlet類

@Path("/dbservice")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class MongoServlet {

我想念什么?

看起來像一個缺少的罐子。 實際上,在javax/ws/rs/core/Application的情況下,stacktrace消息非常清楚。

將此依賴項添加到pom.xml clean中,然后重新生成項目,我想您應該可以。

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.1</version>
</dependency>

就像@Aris_Kortex提到的那樣,問題一直缺失

解決方案是從pom.xml中的maven依賴項中刪除<scope>provided</scope>

我之前的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>

糾正依賴性

<!-- 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不提供jar,必須由應用程序顯式添加。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM