升级到Spring Boot 2.3.8.RELEASE后获取java.lang.NoClassDefFoundErro



我正在尝试将我的SpringBoot版本从2.0.x升级到2.3.8.RELEASE。更新后,在刷新Spring配置服务器时,我的应用程序日志中会出现java.lang.NoClassDefFoundError:brave/internal/HexCodec。我的应用程序是通过PCF部署的,除了公司的内部依赖项外,还使用以下依赖项。

POM文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<properties>
<spring.cloud.vault.version>2.0.1.RELEASE</spring.cloud.vault.version>
<spring-cloud-config-client>2.1.4.RELEASE</spring-cloud-config-client>
<spring.cloud.services.version>2.0.3.RELEASE</spring.cloud.services.version>
<spring.cloud.dependencies.version>Hoxton.SR8</spring.cloud.dependencies.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.pivotal.spring.cloud</groupId>
<artifactId>spring-cloud-services-dependencies</artifactId>
<version>${spring.cloud.services.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-vault-dependencies</artifactId>
<version>${spring.cloud.vault.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.8.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-vault-config</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.savoirtech.logging</groupId>
<artifactId>slf4j-json-logger</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.pivotal.spring.cloud</groupId>
<artifactId>spring-cloud-services-starter-config-client</artifactId>
<version>${spring-cloud-config-client}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
</project>

我想我之所以会遇到这个问题,是因为Spring Sleuth中使用了Zipkins(我们公司的内部依赖项中有这个(。我试着设置spring.zepkin.enabled=false,我也试着用org.springframework.cloud:spring-cloud-starter-sleuth:2.2.8.RELEASE创建下面的bean,但我仍然得到了同样的错误。

@Bean
Reporter<Span> reporter() {
return Reporter.NOOP;
}

应用程序控制台错误消息:org.springframework.web.util.NestedServlet异常:处理程序调度失败;嵌套异常是java.lang.NoClassDefFoundError:brave/internal/HexCodec

在这一点上,我甚至不确定我是否在正确的轨道上。如果需要更多信息,请告诉我。

您能使用最新的发布序列:Hoxton.SR11和最新的Spring Boot2.3.x吗?

有了这些,您应该可以看到具有匹配Sleuth依赖关系的org.springframework.cloud:spring-cloud-starter-zipkin:2.2.8.RELEASE。这应该确保您使用的是正确版本的Brave。

如果这不起作用,请检查您的依赖树和Spring Cloud BOM,并确保您使用的是正确的版本。

相关内容

  • 没有找到相关文章

最新更新