spring-boot 从 1.3.2 升级到 1.3.3 : logback issue

标签 spring neo4j spring-boot logback spring-data-neo4j-4

我们在从 spring-boot 1.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>

今天我升级了基于 spring-boot 和 Spring Data Neo4j 的应用程序,该应用程序在 spring-boot 1.3.2.RELEASE 上启动并运行良好,方法是将 pom.xml 更改为:

<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-boot 1.3.2.RELEASE 和 1.3.3.RELEASE 的 mvn dependency:tree 输出,我可以看到 ch.qos.logback:logback-classic 和 ch 的 transient 依赖.qos.logback:logback-access jar 已从 spring-boot 1.3.2.RELEASE 的 1.1.3 更改为 spring-boot 1.3.3.RELEASE 的 1.1.5,而 ch.qos.logback:logback-core 保持在1.1.3 适用于两种 spring-boot 风格。

有没有人知道根本问题是什么(我猜无法实例化的类已被删除或重新定位)和/或更重要的是——我能做些什么来解决它?

最佳答案

Spring Boot 缺少一些对 logback-core 的依赖管理,这允许不同的版本潜入。我打开了 an issue来解决这个问题。

与此同时,您可以通过将自己的依赖管理添加到您的 pom 中来避免该问题:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>${logback.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

关于spring-boot 从 1.3.2 升级到 1.3.3 : logback issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35738674/

相关文章:

mysql - SERIALIZED CONTEXT 数据截断问题 [SPRING BATCH]

java - 如何将 Neo4j 节点转换为蓝图顶点?

Neo4J Java findNodes 与单个字符串匹配以外的情况

java - Spring Cloud Gateway 不适用于 @Bean DiscoveryClientRouteDefinitionLocator

java - thymeleaf Spring如何将复杂对象发送到 Controller

java - JPA EntityManager创建 native 查询不返回外键数据

java - 如何根据每个请求使用/不使用缓存?

java - 嵌套异常是 java.lang.NoClassDefFoundError : Could not initialize class org. springframework.jdbc.support.SQLErrorCodesFactory

hibernate - java.lang.VerifyError : class net. sf.cglib.core.DebuggingClassWriter

java - 如何提高变长 Neo4j Cypher 查询的性能?