Я понижаю версию небольшого приложения с Tomcat 8 / JRE 1.8 до Tomcat 7 / JRE 1.7 по причинам инфраструктуры. Тем не менее, когда я установил JRE на 1.7 и уровень соответствия компилятора на 1.7, я получил эту ошибку при запуске Tomcat 7. Я пробовал все в этомвопрос, безуспешно.
Фрагмент Maven POM:
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
Любая помощь была бы достойной. Спасибо.
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/compoT7]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1119)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/compoT7]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
... 6 more
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:3209)
at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:1373)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1861)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:278)
at org.apache.catalina.startup.WebappServiceLoader.loadServices(WebappServiceLoader.java:197)
at org.apache.catalina.startup.WebappServiceLoader.load(WebappServiceLoader.java:158)
at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1579)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1280)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:888)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:388)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5522)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
... 6 more
Какую версию Spring Boot / Spring вы используете?
весна (webmvc, jdbc, orm, data-jpa) 5.0.2.RELEASE
Итак, Spring 5.X - это требование JDK 8, которое является вашей проблемой. См. projects.spring.io/spring-framework. Если вам нравится работать с JDK 7, вам нужно перейти на Spring 4.X ....




Caused by: java.lang.UnsupportedClassVersionError: org/springframework/web/SpringServletContainerInitializer : Unsupported major.minor version 52.0 (unable to load class org.springframework.web.SpringServletContainerInitializer)
Похоже, что используемая вами версия Spring была скомпилирована на Java 8. Посмотрите на свою версию Spring и проверьте уровень JRE. Возможно, вам придется понизить версию Spring.
Это просто:
Класс org.springframework.web.SpringServletContainerInitializer из зависимости Spring был скомпилирован с 1.8 JDK. Единственное, что вы можете сделать, - это понизить версию зависимостей Spring до версии, скомпилированной с помощью 1.7 JDK.
Если они определены в одном из ваших pom.xml, просто понизьте их версию.
Если это переходная зависимость, отключайте основную зависимость, которая использует меньшую версию Spring
или исключить скомпилированные зависимости 1.8 и явно добавить меньшую версию.
Вы можете использовать подключаемый модуль Enforcer, чтобы определить, какие библиотеки скомпилированы с неправильной версией. Он скажет вам, для каких именно jar-файлов и для какой версии они скомпилированы.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>specifyLatestVersionHere</version>
<executions>
<execution>
<id>jdk-check</id>
<phase>validate</phase>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<enforceBytecodeVersion>
<maxJdkVersion>1.7</maxJdkVersion>
</enforceBytecodeVersion>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>extra-enforcer-rules</artifactId>
<version>1.0-beta-6</version>
</dependency>
</dependencies>
</plugin>
Куда бы я ни посмотрел, ответы связаны с изменением уровня соответствия JRE и компилятора. Тем не менее, вроде бы что-то другое и хитрое.