#spring #spring-boot #log4j
#весна #весенняя загрузка #log4j
Вопрос:
Я пытаюсь запустить log4j 2.13.3 (последняя версия) с spring boot 2.3.4.RELEASE (последняя версия), но при запуске моего приложения я получаю следующую ошибку:
mix-data-collector_1 | ------------------------------------------------------------------------
mix-data-collector_1 | OpenJDK 64-Bit Server VM warning: Ignoring option PermSize; support was removed in 8.0
mix-data-collector_1 | DB update completed
mix-data-collector_1 | DB migration finished
mix-data-collector_1 | Start Mix Data Collector---------------------------------------------
mix-data-collector_1 | Listening for transport dt_socket at address: 5555
mix-data-collector_1 | Exception in thread "main" java.lang.reflect.InvocationTargetException
mix-data-collector_1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
mix-data-collector_1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
mix-data-collector_1 | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
mix-data-collector_1 | at java.base/java.lang.reflect.Method.invoke(Method.java:566)
mix-data-collector_1 | at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
mix-data-collector_1 loader.Launcher.launch(Launcher.java:87)
mix-data-collector_1 | at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
mix-data-collector_1 | at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
mix-data-collector_1 | Caused by: java.lang.NoClassDefFoundError: org/apache/logging/log4j/util/StackLocator$FqcnCallerLocator
mix-data-collector_1 | at org.apache.logging.log4j.util.StackLocator.<clinit>(StackLocator.java:37)
mix-data-collector_1 | at org.apache.logging.log4j.util.StackLocatorUtil.<clinit>(StackLocatorUtil.java:33)
mix-data-collector_1 | at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:133)
mix-data-collector_1 | at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:228)
mix-data-collector_1 | at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
mix-data-collector_1 | at org.apache.logging.log4j.LogManager.getContext(LogManager.java:174)
mix-data-collector_1 | at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.getLoggerContext(Log4J2LoggingSystem.java:305)
mix-data-collector_1 | at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.beforeInitialize(Log4J2LoggingSystem.java:145)
mix-data-collector_1 | at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:232)
mix-data-collector_1 | at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:213)
mix-data-collector_1 | at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
mix-data-collector_1 | at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
mix-data-collector_1 | at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
mix-data-collector_1 | at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
mix-data-collector_1 | at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:74)
mix-data-collector_1 | at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:47)
mix-data-collector_1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:305)
mix-data-collector_1 | at ch.sbb.esta.openshift.gracefullshutdown.GracefulshutdownSpringApplication.run(GracefulshutdownSpringApplication.java:21)
mix-data-collector_1 | at com.nuance.core.mix.data.collector.Application.main(Application.java:38)
mix-data-collector_1 | ... 8 more
mix-data-collector_1 | Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.util.StackLocator$FqcnCallerLocator
mix-data-collector_1 | at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
mix-data-collector_1 | at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
mix-data-collector_1 | at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93)
mix-data-collector_1 | at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
mix-data-collector_1 | ... 27 more
mix-data-collector_mix-data-collector_1 exited with code 1loader.Launcher.launch(Launcher.java:87)
mix-data-collector_1 | at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
mix-data-collector_1 | at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
mix-data-collector_1 | Caused by: java.lang.NoClassDefFoundError: org/apache/logging/log4j/util/StackLocator$FqcnCallerLocator
mix-data-collector_1 | at org.apache.logging.log4j.util.StackLocator.<clinit>(StackLocator.java:37)
mix-data-collector_1 | at org.apache.logging.log4j.util.StackLocatorUtil.<clinit>(StackLocatorUtil.java:33)
mix-data-collector_1 | at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:133)
mix-data-collector_1 | at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:228)
mix-data-collector_1 | at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
mix-data-collector_1 | at org.apache.logging.log4j.LogManager.getContext(LogManager.java:174)
mix-data-collector_1 | at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.getLoggerContext(Log4J2LoggingSystem.java:305)
mix-data-collector_1 | at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.beforeInitialize(Log4J2LoggingSystem.java:145)
mix-data-collector_1 | at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:232)
mix-data-collector_1 | at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:213)
mix-data-collector_1 | at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
mix-data-collector_1 | at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
mix-data-collector_1 | at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
mix-data-collector_1 | at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
mix-data-collector_1 | at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:74)
mix-data-collector_1 | at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:47)
mix-data-collector_1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:305)
mix-data-collector_1 | at ch.sbb.esta.openshift.gracefullshutdown.GracefulshutdownSpringApplication.run(GracefulshutdownSpringApplication.java:21)
mix-data-collector_1 | at com.nuance.core.mix.data.collector.Application.main(Application.java:38)
mix-data-collector_1 | ... 8 more
mix-data-collector_1 | Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.util.StackLocator$FqcnCallerLocator
mix-data-collector_1 | at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
mix-data-collector_1 | at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
mix-data-collector_1 | at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93)
mix-data-collector_1 | at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
mix-data-collector_1 | ... 27 more
mix-data-collector_mix-data-collector_1 exited with code 1
Мои зависимости maven выглядят так:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
С log4j 2.11.2 приложение запускается нормально (так что в последней версии log4j что-то изменилось), но мне нужно перейти на версию 2.13.3, чтобы смягчить некоторые проблемы безопасности.
Есть идеи, как я могу решить эту проблему?
Комментарии:
1. Удалите
org.apache.logging.log4j
зависимости, добавьтеlog4j2.version
в свои свойства. Кроме того, сама Spring Boot 2.3.4 уже включает Log4j2 2.13.3 в качестве зависимости.2. Я удалил org.apache. зависимости logging.log4j, add добавил log4j2.version, я перекомпилировал, но я все еще получаю ту же ошибку при запуске
3. Вам не нужна версия, поскольку Spring Boot уже использует нужную вам версию. Посмотрите на это . Если это не та версия, которая включена, то что-то другое должно переопределять ее.
4. Я удалил версию из своих свойств, но все еще вижу ту же ошибку . И из того, что я вижу, в моем проекте нет другой версии log4j. Так что это должно быть что-то с этой версией 2.13.3 IMO.
5. Очистите свой репозиторий и повторно загрузите, может быть заблокированный jar.
Ответ №1:
Хорошо, я нашел свою проблему. Кажется, была также зависимость от плагина spring maven, которая вызывала проблему. Спасибо за помощь
Комментарии:
1. Я столкнулся с той же проблемой. Не могли бы вы предоставить информацию о том, в чем заключалась проблема и как вы ее решили
2. Просто убедитесь, что все ваши зависимости, связанные с spring, обновлены.
Ответ №2:
Я решил ту же проблему, обновив зависимость log4j-code до версии 2.14.1