Как исключить конкретный пакет, расположенный в банке зависимостей, из пути к классам? ⇐ JAVA
-
Гость
Как исключить конкретный пакет, расположенный в банке зависимостей, из пути к классам?
У меня возникла проблема с проектом Spring Cloud Task. У меня есть драйвер JDBC Arrow Flight SQL в его зависимостях Gradle, и jar этого драйвера включает в себя пакет org.slf4j. В этом пакете есть реализация ведения журнала NOPLoggerFactory, и она конфликтует с реализацией Logback из spring-boot-starter-logging. Мы обошли эту проблему, заменив Logback на Log4j2.
Но теперь мы хотим создать собственный образ GraalVM. Log4j2 не поддерживает встроенный код, поэтому я хочу вернуть Logback. И я не могу понять, как исправить конфликт с драйвером стрелки, не меняя его банку вручную. Я проверил, что если я удалю пакет org.slf4j из этого jar-файла и создам новый jar-файл из остального содержимого, то ведение журнала будет работать нормально.
Содержимое
build.gradle:
зависимости { реализация('org.springframework.cloud:spring-cloud-starter-task:3.0.7') runtimeOnly("org.apache.arrow:flight-sql-jdbc-driver:12.0.0") ... } Сообщение об ошибке при запуске:
SLF4J: не удалось загрузить класс «org.slf4j.impl.StaticLoggerBinder». SLF4J: по умолчанию используется реализация журнала без операций (NOP). SLF4J: дополнительную информацию см. на http://www.slf4j.org/codes.html#StaticLoggerBinder. Исключение в потоке «main» java.lang.IllegalArgumentException: LoggerFactory не является Logback LoggerContext, но Logback находится в пути к классам. Либо удалите Logback, либо конкурирующую реализацию (класс org.slf4j.helpers.NOPLoggerFactory, загруженный из файла:/Users/unknownuser/.gradle/caches/modules-2/files-2.1/org.apache.arrow/flight-sql-jdbc- драйвер/12.0.0/c54edba7a39afdbb184fe0867f5d2f9a4ccf0259/flight-sql-jdbc-driver-12.0.0.jar). Если вы используете WebLogic, вам нужно будет добавить «org.slf4j» к пакетам предпочтительных приложений в WEB-INF/weblogic.xml: org.slf4j.helpers.NOPLoggerFactory Содержимое банки:
unknownuser@MacBook-Pro-unknownuser libs % jar tf Flight-sql-jdbc-driver-12.0.0.jar| grep org.slf4j орг/slf4j/ org/slf4j/event/ org/slf4j/event/EventConstants.class org/slf4j/event/EventRecodingLogger.class org/slf4j/event/Level.class org/slf4j/event/LoggingEvent.class org/slf4j/event/SubstituteLoggingEvent.class org/slf4j/helpers/ org/slf4j/helpers/BasicMarker.class org/slf4j/helpers/BasicMarkerFactory.class org/slf4j/helpers/BasicMDCAdapter$1.class org/slf4j/helpers/BasicMDCAdapter.class org/slf4j/helpers/FormattingTuple.class org/slf4j/helpers/MarkerIgnoringBase.class org/slf4j/helpers/MessageFormatter.class org/slf4j/helpers/NamedLoggerBase.class org/slf4j/helpers/NOPLogger.class org/slf4j/helpers/NOPLoggerFactory.class org/slf4j/helpers/NOPMDCAdapter.class org/slf4j/helpers/SubstituteLogger.class org/slf4j/helpers/SubstituteLoggerFactory.class org/slf4j/helpers/Util$1.class org/slf4j/helpers/Util$ClassContextSecurityManager.class org/slf4j/helpers/Util.class org/slf4j/ILoggerFactory.class org/slf4j/IMarkerFactory.class org/slf4j/Logger.class org/slf4j/LoggerFactory.class org/slf4j/Marker.class org/slf4j/MarkerFactory.class org/slf4j/MDC$1.class org/slf4j/MDC$MDCCloseable.class org/slf4j/MDC.class org/slf4j/spi/ org/slf4j/spi/LocationAwareLogger.class org/slf4j/spi/LoggerFactoryBinder.class org/slf4j/spi/MarkerFactoryBinder.class org/slf4j/spi/MDCAdapter.class МЕТА-INF/maven/org.slf4j/ META-INF/maven/org.slf4j/slf4j-api/ META-INF/maven/org.slf4j/slf4j-api/pom.xml META-INF/maven/org.slf4j/slf4j-api/pom.properties
У меня возникла проблема с проектом Spring Cloud Task. У меня есть драйвер JDBC Arrow Flight SQL в его зависимостях Gradle, и jar этого драйвера включает в себя пакет org.slf4j. В этом пакете есть реализация ведения журнала NOPLoggerFactory, и она конфликтует с реализацией Logback из spring-boot-starter-logging. Мы обошли эту проблему, заменив Logback на Log4j2.
Но теперь мы хотим создать собственный образ GraalVM. Log4j2 не поддерживает встроенный код, поэтому я хочу вернуть Logback. И я не могу понять, как исправить конфликт с драйвером стрелки, не меняя его банку вручную. Я проверил, что если я удалю пакет org.slf4j из этого jar-файла и создам новый jar-файл из остального содержимого, то ведение журнала будет работать нормально.
Содержимое
build.gradle:
зависимости { реализация('org.springframework.cloud:spring-cloud-starter-task:3.0.7') runtimeOnly("org.apache.arrow:flight-sql-jdbc-driver:12.0.0") ... } Сообщение об ошибке при запуске:
SLF4J: не удалось загрузить класс «org.slf4j.impl.StaticLoggerBinder». SLF4J: по умолчанию используется реализация журнала без операций (NOP). SLF4J: дополнительную информацию см. на http://www.slf4j.org/codes.html#StaticLoggerBinder. Исключение в потоке «main» java.lang.IllegalArgumentException: LoggerFactory не является Logback LoggerContext, но Logback находится в пути к классам. Либо удалите Logback, либо конкурирующую реализацию (класс org.slf4j.helpers.NOPLoggerFactory, загруженный из файла:/Users/unknownuser/.gradle/caches/modules-2/files-2.1/org.apache.arrow/flight-sql-jdbc- драйвер/12.0.0/c54edba7a39afdbb184fe0867f5d2f9a4ccf0259/flight-sql-jdbc-driver-12.0.0.jar). Если вы используете WebLogic, вам нужно будет добавить «org.slf4j» к пакетам предпочтительных приложений в WEB-INF/weblogic.xml: org.slf4j.helpers.NOPLoggerFactory Содержимое банки:
unknownuser@MacBook-Pro-unknownuser libs % jar tf Flight-sql-jdbc-driver-12.0.0.jar| grep org.slf4j орг/slf4j/ org/slf4j/event/ org/slf4j/event/EventConstants.class org/slf4j/event/EventRecodingLogger.class org/slf4j/event/Level.class org/slf4j/event/LoggingEvent.class org/slf4j/event/SubstituteLoggingEvent.class org/slf4j/helpers/ org/slf4j/helpers/BasicMarker.class org/slf4j/helpers/BasicMarkerFactory.class org/slf4j/helpers/BasicMDCAdapter$1.class org/slf4j/helpers/BasicMDCAdapter.class org/slf4j/helpers/FormattingTuple.class org/slf4j/helpers/MarkerIgnoringBase.class org/slf4j/helpers/MessageFormatter.class org/slf4j/helpers/NamedLoggerBase.class org/slf4j/helpers/NOPLogger.class org/slf4j/helpers/NOPLoggerFactory.class org/slf4j/helpers/NOPMDCAdapter.class org/slf4j/helpers/SubstituteLogger.class org/slf4j/helpers/SubstituteLoggerFactory.class org/slf4j/helpers/Util$1.class org/slf4j/helpers/Util$ClassContextSecurityManager.class org/slf4j/helpers/Util.class org/slf4j/ILoggerFactory.class org/slf4j/IMarkerFactory.class org/slf4j/Logger.class org/slf4j/LoggerFactory.class org/slf4j/Marker.class org/slf4j/MarkerFactory.class org/slf4j/MDC$1.class org/slf4j/MDC$MDCCloseable.class org/slf4j/MDC.class org/slf4j/spi/ org/slf4j/spi/LocationAwareLogger.class org/slf4j/spi/LoggerFactoryBinder.class org/slf4j/spi/MarkerFactoryBinder.class org/slf4j/spi/MDCAdapter.class МЕТА-INF/maven/org.slf4j/ META-INF/maven/org.slf4j/slf4j-api/ META-INF/maven/org.slf4j/slf4j-api/pom.xml META-INF/maven/org.slf4j/slf4j-api/pom.properties
Мобильная версия