首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Boot Redis在停靠时出现错误,但在maven运行时不会出现

Spring Boot Redis在停靠时出现错误,但在maven运行时不会出现
EN

Stack Overflow用户
提问于 2020-04-09 18:18:13
回答 1查看 220关注 0票数 0

我正在使用Redis使用Spring Boot构建一个应用程序(使用redisson)。

当我在开发模式下运行我的应用程序时,它工作得很好,但是当我尝试在docker容器中运行它时,它失败了,并显示以下错误

代码语言:javascript
复制
java.lang.ClassNotFoundException:org.springframework.data.redis.connection.ReactiveStreamCommands

我对Redis的maven配置:

代码语言:javascript
复制
        <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配置:

代码语言:javascript
复制
            <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库时(使用以下命令):

代码语言:javascript
复制
jar -tf my-app.jar | grep redis

我发现这一点:

代码语言:javascript
复制
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摘录:

代码语言:javascript
复制
  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吗?提前感谢

EN

回答 1

Stack Overflow用户

发布于 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上找不到在什么情况下应该使用哪个版本的轨道,所以我只是尝试了另一个版本……它成功了!

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61118910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档