Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java web应用程序不是使用Jersey 2.26在Tomcat 8.5或9上启动的_Java_Rest_Jersey_Tomcat8_Tomcat9 - Fatal编程技术网

Java web应用程序不是使用Jersey 2.26在Tomcat 8.5或9上启动的

Java web应用程序不是使用Jersey 2.26在Tomcat 8.5或9上启动的,java,rest,jersey,tomcat8,tomcat9,Java,Rest,Jersey,Tomcat8,Tomcat9,我正在尝试使用Maven构建的Jersey 2.26将一个简单的Java(1.8)web应用程序部署到Tomcat 9(也在8.5上进行了尝试)。我在构建时没有看到任何错误,但部署到Tomcat时,应用程序不会启动 我指的是这里列出的选项 Tomcat日志/catalina.out中的错误 17-Aug-2018 21:46:06.062严重[http-nio-8080-exec-39]org.apache.catalina.startup.HostConfig.deployWAR部署web应

我正在尝试使用Maven构建的Jersey 2.26将一个简单的Java(1.8)web应用程序部署到Tomcat 9(也在8.5上进行了尝试)。我在构建时没有看到任何错误,但部署到Tomcat时,应用程序不会启动

我指的是这里列出的选项

Tomcat日志/catalina.out中的错误

17-Aug-2018 21:46:06.062严重[http-nio-8080-exec-39]org.apache.catalina.startup.HostConfig.deployWAR部署web应用程序存档时出错[/Users/konathal/Software/apache-tomcat-9.0.10/webapps/jaq stack webapp.war]
java.lang.IllegalStateException:ContainerBase.addChild:start:org.apache.catalina.LifecycleException:无法启动组件[

原因:java.lang.NoClassDefFoundError:javax/ws/rs/core/Application
位于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>
<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>

我遗漏了什么?

看起来像是遗漏了一个jar。实际上,stacktrace消息非常清楚,因为无法找到
javax/ws/rs/core/Application

将此依赖项添加到您的
pom.xml
清理并重建项目,我想您应该可以

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

javax.ws.rs
javax.ws.rs-api
2.1

像@Aris_Kortex提到的问题是缺少

解决方案是从pom.xml中的maven依赖项中删除提供的

之前my 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>

javax.ws.rs
javax.ws.rs-api
2.1
假如
纠正依赖关系

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

javax.ws.rs
javax.ws.rs-api
2.1

Tomcat不提供jar,必须由应用程序显式添加。

您共享的pom文件是全部还是一部分?您根本不应该添加它。它已经由Jersey拉入。但由于您按照提供的方式添加了它,所以它没有被包含。只需删除整个文件即可。
<!-- 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>