#spring-boot #log4j #slf4j #ignite
#spring-boot #log4j #slf4j #ignite
Вопрос:
Привет,
Приведенное ниже исключение возникает, когда я включаю зависимость ignite в свое приложение spring boot. Несмотря на то, что причина кажется очевидной, что 2 jar здесь находятся в тупике, можете ли вы подсказать мне, как я могу это исправить. Я не добавляю ни один из этих jar напрямую, и они автоматически включаются в другие зависимости.
build.gradle
buildscript {
repositories {
mavenCentral()
maven { url "http://repo.spring.io/libs-snapshot" }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.1.RELEASE")
classpath 'mysql:mysql-connector-java:5.1.34'
}
}
// Apply the java plugin to add support for Java
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
jar {
baseName = 'gs-spring-boot'
version = '0.1.0'
}
// In this section you declare where to find the dependencies of your project
repositories {
// Use 'jcenter' for resolving your dependencies.
// You can declare any Maven/Ivy/file repository here.
mavenCentral()
maven { url "http://repo.spring.io/libs-snapshot" }
jcenter()
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
// In this section you declare the dependencies for your production and test code
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.springframework.boot:spring-boot-starter-jdbc")
compile("org.springframework.boot:spring-boot-starter-data-jpa")
compile("mysql:mysql-connector-java:5.1.34")
// Ignite dependencies
compile group: 'org.apache.ignite', name: 'ignite-core', version: '1.6.0'
compile group: 'org.apache.ignite', name: 'ignite-spring', version: '1.6.0'
compile group: 'org.apache.ignite', name: 'ignite-indexing', version: '1.6.0'
compile group: 'org.apache.ignite', name: 'ignite-rest-http', version: '1.6.0'
testCompile 'junit:junit:4.12'
}
Исключение:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/Cellar/gradle/2.13/caches/modules-2/files-2.1/org.slf4j/slf4j-log4j12/1.7.21/7238b064d1aba20da2ac03217d700d91e02460fa/slf4j-log4j12-1.7.21.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/Cellar/gradle/2.13/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.1.7/9865cf6994f9ff13fce0bf93f2054ef6c65bb462/logback-classic-1.1.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError.
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.slf4j.impl.StaticLoggerBinder.<init>(StaticLoggerBinder.java:72)
at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:45)
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383)
at com.boot.App.<clinit>(App.java:42)
Caused by: java.lang.IllegalStateException: Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError.
Ответ №1:
Вы должны исключить конфликтующие зависимости, как показано ниже.
Обратитесь к официальной документации для получения дополнительной информации.
exclude group: 'org.slf4j', module: 'slf4j-log4j12'
Пример из официальной документации:
Комментарии:
1. Вышеуказанная проблема решена, но возникает исключение. Моя текущая зависимость выглядит следующим образом — java.lang. Ошибка NoSuchMethodError: org.eclipse.jetty.util.log.StdErrLog.setProperties(Ljava /util/Properties;)В org.apache.ignite.internal.processors.rest.protocols.http.jetty. GridJettyRestProtocol. <clinit>(grid-jettyrestprotocol.java:72) java.lang. Class.forName0 (собственный метод) java.lang. Class.forName(Class.java:264) org.apache.ignite.internal.processors.rest.GridRestProcessor.startHttpProtocol(GridRestProcessor.java:831 ) org.apache.ignite.internal.processors.rest.GridRestProcessor.start(GridRestProcessor.java:451)
2. скомпилировать («org.apache.ignite:ignite-rest-http:1.7.0») { исключить группу: «org.slf4j»} скомпилировать(«org.springframework.boot:spring-boot-starter-web») скомпилировать(«org.springframework.boot: spring-boot-starter-jdbc») скомпилировать(«org.springframework.boot: spring-boot-starter-data-jpa «) группа компиляции: ‘org.apache.ignite’, имя: ‘ignite-core’, версия: ‘1.7.0’ группа компиляции: ‘org.apache.ignite’, имя: ‘ignite-spring’, версия: ‘1.7.0’ группа компиляции: ‘org.apache.ignite’, имя: ‘ignite-indexing’, версия: ‘1.7.0’ группа компиляции: ‘org.apache.ignite’, имя: ‘ignite-rest-http’, версия: ‘1.7.0’