Spring boot Tomcat 9在部署Spring Boot WAR时失败
我正试图从我的基本spring引导应用程序构建一个war文件。该应用程序将使用“mvn包”成功构建WAR,但是,当我将其部署到Tomcat 9服务器时,我得到以下消息:Spring boot Tomcat 9在部署Spring Boot WAR时失败,spring-boot,intellij-idea,tomcat9,Spring Boot,Intellij Idea,Tomcat9,我正试图从我的基本spring引导应用程序构建一个war文件。该应用程序将使用“mvn包”成功构建WAR,但是,当我将其部署到Tomcat 9服务器时,我得到以下消息: FAIL - Application at context path [/kevthedev] could not be started FAIL - Encountered exception [org.apache.catalina.LifecycleException: Failed to start component
FAIL - Application at context path [/kevthedev] could not be started
FAIL - Encountered exception [org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/kevthedev]]]
目标是构建一个基本的spring引导应用程序,并将其部署到Tomcat9服务器上。spring引导应用程序将没有嵌入式tomcat服务器,而是使用我构建的外部tomcat服务器9
下面是我的Pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.kev.developer</groupId>
<artifactId>kevthedev</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>kevthedev</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>${artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
附件是我的日志
2018-10-09 16:03:51.353 INFO 798 --- [o-8080-exec-114] com.zaxxer.hikari.HikariDataSource : HikariPool-12 - Starting...
2018-10-09 16:03:51.566 INFO 798 --- [o-8080-exec-114] com.zaxxer.hikari.HikariDataSource : HikariPool-12 - Start completed.
2018-10-09 16:03:51.627 INFO 798 --- [o-8080-exec-114] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2018-10-09 16:03:51.652 INFO 798 --- [o-8080-exec-114] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [
2018-10-09 16:03:51.813 INFO 798 --- [o-8080-exec-114] org.hibernate.Version : HHH000412: Hibernate Core {5.2.17.Final}
2018-10-09 16:03:51.814 INFO 798 --- [o-8080-exec-114] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2018-10-09 16:03:51.842 WARN 798 --- [o-8080-exec-114] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
2018-10-09 16:03:51.842 INFO 798 --- [o-8080-exec-114] com.zaxxer.hikari.HikariDataSource : HikariPool-12 - Shutdown initiated...
2018-10-09 16:03:51.869 INFO 798 --- [o-8080-exec-114] com.zaxxer.hikari.HikariDataSource : HikariPool-12 - Shutdown completed.
2018-10-09 16:03:51.921 INFO 798 --- [o-8080-exec-114] ConditionEvaluationReportLoggingListener :
2018-10-09 16:03:51.926 ERROR 798 --- [o-8080-exec-114] o.s.boot.SpringApplication : Application run failed
我需要包含一个依赖项。所有说明都说,您可以只将包配置为war,添加tomcat依赖项,然后更新主类以覆盖。然而,这不是唯一的事情 我需要在pom.xml中添加以下依赖项
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
日志文件夹下的catalina.out或标准out日志文件中应该有更多日志。分析它们或将它们粘贴到这里。我将日志附在上面的问题上。为什么你必须部署一个Spring Boot应用程序作为对Tomcat的战争?我建议部署一个可执行JAR,其中运行Tomcat。颠倒问题。@duffymo我需要使用Docker容器设置环境。tomcat服务器与环境相关联。因此,我必须删除嵌入式tomcat并将应用程序部署到环境中。如果不是这样的话,我会一直嵌入tomcat。如果你在Docker中运行,你所需要的只是一个Java JVM来运行Spring Boot可执行文件。
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
grep "^$(date -I)" /opt/tomcat/logs/catalina.out
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException