Spring-Boot1.3.2から最近リリースされた1.3.3にアップグレードするときに問題が発生しました。
私たちのアプリケーションは、問題なく、それぞれ最新の次の依存関係を利用しています。
<neo4j.version>2.3.2</neo4j.version>
<sdn.version>4.0.0.RELEASE</sdn.version>
<sdn.rest.version>3.4.0.RELEASE</sdn.rest.version>
<neo4j.ogm.version>1.1.5</neo4j.ogm.version>
今日、pom.xmlを次のように変更することで、spring-bootおよびSpring Data Neo4jベースのアプリケーションをアップグレードしました。このアプリケーションは、spring-boot 1.3.2.RELEASEで起動し、正常に動作します。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.2.RELEASE</version>
</parent>
に
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.3.RELEASE</version>
</parent>
これが文字通り唯一の変更であるため、アプリケーションは次のエラーで起動に失敗します。
.。
Failed to instantiate [ch.qos.logback.classic.LoggerContext]
Reported exception:
Java.lang.AbstractMethodError: ch.qos.logback.classic.pattern.EnsureExceptionHandling.process(Lch/qos/logback/core/pattern/Converter;)V
at ch.qos.logback.core.pattern.PatternLayoutBase.start(PatternLayoutBase.Java:88)
at ch.qos.logback.classic.encoder.PatternLayoutEncoder.start(PatternLayoutEncoder.Java:28)
at ch.qos.logback.core.joran.action.NestedComplexPropertyIA.end(NestedComplexPropertyIA.Java:167)
at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.Java:317)
at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.Java:196)
at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.Java:182)
at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.Java:62)
at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.Java:149)
at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.Java:135)
at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.Java:99)
at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.Java:49)
at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.Java:77)
at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.Java:152)
at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.Java:85)
at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.Java:55)
at org.slf4j.LoggerFactory.bind(LoggerFactory.Java:143)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.Java:122)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.Java:378)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.Java:328)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.Java:349)
at com.mycompany.Application.<clinit>(Application.Java:35)
予想どおり、1.3.2.RELEASEに戻っても問題は発生しません。
これまでのところ検索すると、たどる道はありません。 spring-boot1.3.2.RELEASEと1.3.3.RELEASEの使用間のmvn dependency:tree
出力を比較すると、ch.qos.logback:logback-classicとch.qos.logback:logbackの一時的な依存関係がわかります。 -アクセスjarは、spring-boot1.3.2.RELEASEの1.1.3からspring-boot1.3.3.RELEASEの1.1.5に変更されましたが、ch.qos.logback:logback-coreは両方のSpringで1.1.3のままです。 -ブートフレーバー。
根本的な問題が何であるか(インスタンス化に失敗したクラスが削除または再配置されたと思います)および/または-さらに重要なことに-それを解決するために何ができるかについて誰かが知っていますか?
Spring Bootには、logback-core
の依存関係管理が欠けているため、さまざまなバージョンが忍び寄ることができます。これに対処するために 問題 を開きました。
それまでの間、pomに独自の依存関係管理を追加することで、問題を回避できます。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
</dependencies>
</dependencyManagement>