【发布时间】:2021-05-10 16:33:19
【问题描述】:
我正在构建一个应用程序,我在其中使用 Jenkins 从 git 构建我的代码并将其部署到 tomcat 服务器映像。以下是我的配置:
Jenkins 在 AWS 上构建,并将战争部署到 AWS 上的应用服务器。我安装了一个 docker 并使用 tomcat v8.0 映像创建了一个容器。
sudo docker run -d --name tomcat-container -p 8080:8080 tomcat:8.0
当我启动容器并尝试访问应用程序 http://:/application 时,出现错误。下面是我看到的,
10-May-2021 16:15:18.516 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
10-May-2021 16:15:18.516 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 4.14.231-173.361.amzn2.x86_64
10-May-2021 16:15:18.516 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
10-May-2021 16:15:18.517 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/lib/jvm/java-7-openjdk-amd64/jre
10-May-2021 16:15:18.517 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 1.7.0_181-b01
10-May-2021 16:15:18.517 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
10-May-2021 16:15:18.518 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat
10-May-2021 16:15:18.518 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat
10-May-2021 16:17:41.032 SEVERE [14] org.apache.catalina.startup.HostConfig.deployWARs Error waiting for multi-thread deployment of WAR files to complete
java.lang.InterruptedException
at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:400)
at java.util.concurrent.FutureTask.get(FutureTask.java:187)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:766)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:436)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1623)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:318)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:95)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1170)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1379)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1383)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1351)
at java.lang.Thread.run(Thread.java:748)
10-May-2021 16:17:41.486 SEVERE [localhost-startStop-2] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/bankingapi]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:755)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:731)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:973)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1850)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:473)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.UnsupportedClassVersionError: org/springframework/web/SpringServletContainerInitializer : Unsupported major.minor version 52.0 (unable to load class org.springframework.web.SpringServletContainerInitializer)
at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2532)
at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:872)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1321)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:278)
POM.xml:
<properties>
<java.version>1.7</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<springfox-version>2.9.2</springfox-version>
</properties>
请告知可能出了什么问题。我无法使用当前版本的 tomcat,因为我的应用程序无法在其上运行。
【问题讨论】:
-
基本上问题不在于Tomcat的版本(虽然从2018年开始不支持8.0),而是Java的版本(从2015年开始不支持Java 7),这对于你的Spring库来说太旧了。