记一次redis的诡异报错

本文解决了一个Spring Boot 2.0.4版本中遇到的与Redis相关联的AnnotationFormatError异常,通过调整spring-boot-starter-parent依赖版本至2.0.3,成功解决了错误并使应用正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误信息如下:AnnotationFormatError: Invalid default: public abstract java.lang.Class org.springframework.data.redis.repository.configuration.EnableRedisRepositories.repositoryFactoryBeanClass()

java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.springframework.data.redis.repository.configuration.EnableRedisRepositories.repositoryFactoryBeanClass()
    at java.lang.reflect.Method.getDefaultValue(Method.java:612) ~[na:1.8.0_121]
    at sun.reflect.annotation.AnnotationType.<init>(AnnotationType.java:132) ~[na:1.8.0_121]
    at sun.reflect.annotation.AnnotationType.getInstance(AnnotationType.java:85) ~[na:1.8.0_121]
    at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:266) ~[na:1.8.0_121]
    at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120) ~[na:1.8.0_121]
    at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72) ~[na:1.8.0_121]
    at java.lang.Class.createAnnotationData(Class.java:3521) ~[na:1.8.0_121]
    at java.lang.Class.annotationData(Class.java:3510) ~[na:1.8.0_121]
    at java.lang.Class.getAnnotations(Class.java:3446) ~[na:1.8.0_121]
    at org.springframework.core.type.StandardAnnotationMetadata.<init>(StandardAnnotationMetadata.java:70) ~[spring-core-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.boot.autoconfigure.data.AbstractRepositoryConfigurationSourceSupport.getConfigurationSource(AbstractRepositoryConfigurationSourceSupport.java:67) ~[spring-boot-autoconfigure-2.0.4.RELEASE.jar:2.0.4.RELEASE]
    at org.springframework.boot.autoconfigure.data.AbstractRepositoryConfigurationSourceSupport.registerBeanDefinitions(AbstractRepositoryConfigurationSourceSupport.java:59) ~[spring-boot-autoconfigure-2.0.4.RELEASE.jar:2.0.4.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:358) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684) ~[na:1.8.0_121]
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:357) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:145) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:117) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:328) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:233) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:271) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:91) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:694) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:532) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:398) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:330) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1258) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1246) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
    at com.example.demo.DemoApplication.main(DemoApplication.java:10) [classes/:na]

在网上找了挺久的问题的,然后在这篇文章找到了个解决方法https://blog.youkuaiyun.com/w605283073/article/details/80596378
应该是redis的版本不同引起的,我的主要解决方法是将maven工程里面的

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

这部分改成

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

就是版本从2.0.4改成2.0.3然后重新启动就ok了。
问题有点奇怪,所以记录一下解决方法方便他人

<think>好的,我现在需要帮助用户解决Redis安装过程中遇到的错误问题。首先,我应该回忆用户提供的引用内容,看看里面有没有相关的解决方案。用户引用了五个来源,其中引用[2]、[4]、[5]可能和安装报错相关。 引用[2]提到了CentOS下安装Redis的步骤和报错解决方案,可能包含常见的依赖问题。引用[4]则具体提到了linenoise相关的报错,提示需要安装gcc和更新linenoise。引用[5]涉及到保护模式的错误,可能是在配置Redis时没有正确设置绑定地址或密码导致的。 接下来,我需要将这些信息整理成结构清晰的解决方案。可能的问题点包括依赖缺失、linenoise编译错误、保护模式开启导致无法远程连接等。需要分步骤说明如何安装依赖、解决编译错误、修改配置文件等。 同时,用户要求生成相关问题,我需要考虑常见的后续问题,比如性能优化、配置调整、数据持久化等。这些问题可以帮助用户进一步了解Redis的使用和故障排除。 需要确保使用正确的中文表达,避免技术术语错误,并且引用对应的来源。例如,在解决linenoise错误时,要引用[4],在保护模式问题中引用[5]。同时,按照用户的格式要求,使用列表和代码块来展示命令和配置修改。 最后,检查是否有遗漏的步骤,比如启动服务、验证安装是否成功,这些也是安装后的重要步骤。确保用户按照指导操作后能够顺利解决报错,完成Redis的安装和配置。</think>以下是Redis安装过程中常见报错的解决方案及步骤说明: ### 一、依赖缺失导致的编译错误 1. **安装基础依赖工具链**: ```bash yum install -y gcc make tcl ``` 部分系统需要额外安装g++(引用[2]): ```bash yum install gcc-c++ ``` 2. **解决linenoise报错**(引用[4]): ```bash # 进入Redis源码目录 cd deps/linenoise make # 返回根目录重新编译 make clean && make ``` ### 二、保护模式连接问题 修改配置文件`redis.conf`: ```bash vim redis.conf ``` 修改以下参数: ```properties protected-mode no # 关闭保护模式(引用[5]) bind 0.0.0.0 # 允许所有IP连接 requirepass 密码 # 设置访问密码 ``` 重启服务生效: ```bash systemctl restart redis ``` ### 三、服务启动失败排查 1. 查看错误日志: ```bash journalctl -u redis -n 100 ``` 2. 验证端口监听: ```bash netstat -tlnp | grep 6379 ``` ### 四、其他常见问题 - **内存分配错误**:调整内核参数`vm.overcommit_memory=1` - **持久化失败**:检查磁盘空间和目录权限
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值