我正在使用Redis使用Spring Boot构建一个应用程序(使用redisson)。
当我在开发模式下运行我的应用程序时,它工作得很好,但是当我尝试在docker容器中运行它时,它失败了,并显示以下错误
java.lang.ClassNotFoundException:org.springframework.data.redis.connection.ReactiveStreamCommands我对Redis的maven配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<!-- for Spring Data Redis v.2.2.x -->
<artifactId>redisson-spring-data-22</artifactId>
<version>3.12.2</version>
</dependency>我构建docker容器的maven配置:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.1</version>
<dependencies>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
<configuration>
<imageName>${imageName}</imageName>
<!-- default properties to tag an image -->
<image>${imageName}</image>
<newName>${imageName}:${tagName}</newName>
<!-- gitlab registry -->
<serverId>gitlab-repository</serverId>
<registryUrl>my.repository</registryUrl>
<baseImage>adoptopenjdk/openjdk11-openj9:latest</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<!-- copy the service's jar file from target into the root directory
of the image -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>当我登录到我的容器并分析我的jar库时(使用以下命令):
jar -tf my-app.jar | grep redis我发现这一点:
BOOT-INF/lib/spring-boot-starter-data-redis-2.1.3.RELEASE.jar
BOOT-INF/lib/spring-data-redis-2.1.5.RELEASE.jar
BOOT-INF/lib/redisson-spring-data-22-3.12.2.jar
BOOT-INF/lib/redisson-3.12.2.jar这与我使用jar进行开发时得到的完全相同。
这是关于我如何启动redis的docker-compose摘录:
redis:
image: redis:5.0
ports:
- 6379:6379
networks:
- network
volumes:
- redis:/data
entrypoint: redis-server --appendonly yes
restart: unless-stopped关于我的容器需要什么才能正常运行,有什么线索吗?你知道为什么jar中使用的spring-data-redis是2.1.5而不是2.2.x吗?提前感谢
发布于 2020-04-14 23:05:34
我找到了一个解决方案:
我没有使用redisson-spring-data-22,而是降级到了redisson-spring-data-16 (因为我注意到使用的spring-data-redis的有效版本实际上是2.1.5,低于2.2 ...)。
我真的不能解释为什么,但是它现在起作用了,。
我在redisson-spring-data上找不到在什么情况下应该使用哪个版本的轨道,所以我只是尝试了另一个版本……它成功了!
希望这能有所帮助。
https://stackoverflow.com/questions/61118910
复制相似问题