`
xinklabi
  • 浏览: 1590857 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

Redis + Spring整合遇到的Spring初始化bean异常

 
阅读更多

转自:http://zhaobing315.iteye.com/blog/2082189

项目中需要用到缓存,经过比较后,选择了redis,客户端使用jedis连接,也使用到了spring提供的spring-data-redis。配置正确后启动tomcat,发现如下异常:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisTemplate' defined in class path resource [spring.xml]: Initialization of bean failed; nested exception is java.lang.VerifyError: Bad type on operand stack

Exception Details:

  Location:

    org/springframework/data/redis/connection/jedis/JedisConnectionFactory.afterPropertiesSet()V @109: invokespecial

  Reason:

    Type 'redis/clients/jedis/JedisPoolConfig' (current frame, stack[3]) is not assignable to 'org/apache/commons/pool2/impl/GenericObjectPoolConfig'

  Current Frame:

    bci: @109

    flags: { }

    locals: { 'org/springframework/data/redis/connection/jedis/JedisConnectionFactory' }

    stack: { 'org/springframework/data/redis/connection/jedis/JedisConnectionFactory', uninitialized 73, uninitialized 73, 'redis/clients/jedis/JedisPoolConfig', 'java/lang/String', integer, integer, 'java/lang/String' }

  Bytecode:

    0000000: 2ab4 000d c700 3d2a bb00 1759 2ab4 0003

    0000010: 2ab4 0004 b700 18b5 000d 2ab4 0019 b800

    0000020: 1a99 000e 2ab4 000d 2ab4 0019 b600 1b2a

    0000030: b400 059e 000e 2ab4 000d 2ab4 0005 b600

    0000040: 1c2a b400 0699 002e 2abb 001d 592a b400

    0000050: 0a2a b400 0db6 001e 2ab4 000d b600 1f2a

    0000060: b400 0db6 0020 2ab4 000d b600 21b7 0022

    0000070: b500 07b1                              

  Stackmap Table:

    same_frame(@47)

    same_frame(@65)

    same_frame(@115)

 

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)

at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198)

at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:442)

at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:416)

at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:550)

at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:150)

at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)

at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:303)

... 39 more

Caused by: java.lang.VerifyError: Bad type on operand stack

Exception Details:

  Location:

    org/springframework/data/redis/connection/jedis/JedisConnectionFactory.afterPropertiesSet()V @109: invokespecial

  Reason:

    Type 'redis/clients/jedis/JedisPoolConfig' (current frame, stack[3]) is not assignable to 'org/apache/commons/pool2/impl/GenericObjectPoolConfig'

  Current Frame:

    bci: @109

    flags: { }

    locals: { 'org/springframework/data/redis/connection/jedis/JedisConnectionFactory' }

    stack: { 'org/springframework/data/redis/connection/jedis/JedisConnectionFactory', uninitialized 73, uninitialized 73, 'redis/clients/jedis/JedisPoolConfig', 'java/lang/String', integer, integer, 'java/lang/String' }

  Bytecode:

    0000000: 2ab4 000d c700 3d2a bb00 1759 2ab4 0003

    0000010: 2ab4 0004 b700 18b5 000d 2ab4 0019 b800

    0000020: 1a99 000e 2ab4 000d 2ab4 0019 b600 1b2a

    0000030: b400 059e 000e 2ab4 000d 2ab4 0005 b600

    0000040: 1c2a b400 0699 002e 2abb 001d 592a b400

    0000050: 0a2a b400 0db6 001e 2ab4 000d b600 1f2a

    0000060: b400 0db6 0020 2ab4 000d b600 21b7 0022

    0000070: b500 07b1                              

  Stackmap Table:

    same_frame(@47)

    same_frame(@65)

    same_frame(@115)

 

at java.lang.Class.getDeclaredConstructors0(Native Method)

at java.lang.Class.privateGetDeclaredConstructors(Class.java:2493)

at java.lang.Class.getDeclaredConstructors(Class.java:1901)

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:230)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:972)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:945)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)

at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)

at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:323)

at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1387)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1128)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)

... 50 more

 

非常奇怪,由于google的访问限制,百度了半天也没什么结果,我就知道google一定可以的,果断FQ搜索,果然没有让我失望,

google结果链接:http://stackoverflow.com/questions/22704518/jedispoolconfig-is-not-assignable-to-genericobjectpoolconfig

 

看情况应该是jar包版本问题,我目前的版本为:jedis-2.1.0.jar + spring-data-redis-1.3.0.RELEASE.jar。

按照提示我将jedis升级成了jedis-2.4.2.jar。

再次运行,成功!!

 

分享到:
评论

相关推荐

    常见面试题 :分布式+微服务+MYSQL+Redis+JVM+Spring等等(0积分下载)

    3. Spring Boot:简化Spring应用的初始化和配置,自动配置特性。 4. Spring Cloud:为微服务提供了一套完整的服务发现、配置、熔断、路由等解决方案。 以上是针对标题和描述中提及的各个技术领域可能涉及到的面试...

    SpringBoot+SpringSecurity+Vue实现后台管理系统的开发项目源代码

    SpringBoot是Spring框架的一个扩展,旨在简化Java应用的初始搭建以及开发过程。它预配置了许多常见的设置,如数据源、服务器、安全等,使得开发者可以快速地创建独立的、生产级别的基于Spring的应用。在本项目中,...

    Java面试解析总结:Java+Redis+数据库+解决方案+分布式...docx

    - **Spring Bean生命周期**:Spring容器负责管理Bean的生命周期,从创建、初始化到销毁。理解这些阶段有助于更好地管理和控制Bean的状态。 - **循环依赖问题**:在Spring中,Bean可以通过构造函数注入、setter注入...

    springboot整合redis+ecache

    SpringBoot 是一个由 Pivotal Team 创建的框架,它简化了 Spring 应用程序的初始搭建以及开发过程。它的核心特性可以嵌入到应用服务器中,也可以独立运行。通过简化 Maven 配置、自动配置和“起步依赖”(Starter ...

    整合 redis+shiro+ssmDemo

    在项目中,`data.sql`和`table.sql`可能是数据库初始化脚本,用于创建必要的表结构并填充初始数据。这在开发和测试环境中非常常见,可以快速搭建应用的基础环境。而`quotationsystem`可能是一个应用程序或服务的名称...

    springBoot集成redis

    接着,编写Redis配置类,用于初始化RedisTemplate: ```java @Configuration public class RedisConfig { @Bean public RedisConnectionFactory redisConnectionFactory() { return new JedisConnectionFactory...

    框架springmvc3.2+spring3.2+mybatis3.11整合附带jar包

    通过MyEclipse的New -> Dynamic Web Project创建项目,添加SSM相关的库和配置文件,完成项目的初始化。 这个压缩包简化了SSM的集成步骤,使得开发者可以更专注于业务逻辑的实现,而无需花费大量时间在环境配置上。...

    《Java EE企业级应用开发教程Spring+Spring MVC+MyBatis》_源代码.zip

    10. **Chapter 17** - Spring Boot:简述Spring Boot快速开发框架,如何简化Spring应用的初始化和配置。包括自动配置、起步依赖和命令行界面等内容。 这些章节覆盖了Java EE开发中的关键技术和最佳实践,从基础到...

    struts2+mybatis+spring3框架整合

    在实际项目中,开发者需要根据业务需求运行这些SQL语句来初始化数据库。 6. **源代码**:压缩包内可能包含的源代码包括Action类、Service接口和实现、DAO接口和实现、Mapper接口和XML映射文件,以及相关的配置文件...

    Spring Boot整合redis

    **Spring Boot 整合 Redis 知识点详解** 在现代Web开发中,Spring Boot因其便捷的配置、快速的启动和强大的功能集而受到广泛的欢迎。其中,数据存储和缓存是系统性能优化的关键部分,而Redis作为一个高性能的键值...

    SSM框架+redis+druid事务控制+定时任务介绍+sql脚本+测试说明及请求路径

    总结来说,这个项目提供了一个使用SSM框架构建的Web应用,整合了Redis缓存、Druid数据源以及定时任务功能,同时包含了SQL脚本来创建数据库结构和初始化数据。MyEclipse 2014和Tomcat 8是开发和运行环境,用户可以...

    Springmvc+spring+mybatis的web整合

    SpringBoot可以简化项目的初始化和配置,提升开发效率。此外,通过Spring的缓存支持,我们可以集成Ehcache或Redis进行数据缓存,进一步优化性能。 总结,SpringMVC+Spring+MyBatis的整合提供了一种高效、可维护的...

    spting4mvc+mybatis整合实例(入门)

    此外,还可以考虑使用Spring Boot,它预设了许多配置,让项目初始化更加迅速。 总的来说,Spring MVC与MyBatis的整合提供了灵活的Web应用开发方式,允许开发者专注于业务逻辑,而非底层的数据库操作。随着对这两个...

    java中spring框架使用redis所需的5个jar包

    在Java开发中,Spring框架是广泛应用...同时,别忘了在Spring的配置文件中设置Redis的相关属性,如主机地址、端口、密码等,以便正确地初始化连接。通过这样的配置,你就可以在Spring框架下充分利用Redis的强大功能了。

    SpringBoot整合redis及工具类

    通常,会有一个简单的`main`方法,初始化SpringBoot应用并执行一些测试用例,确保Redis操作正确无误。 在提供的sql文件中,可能包含了用于测试的数据,例如,创建数据库表、插入初始数据等。这些数据可以用于模拟...

    redis集群以及Spring-data-redis操作集群

    3. **创建集群**:使用`redis-trib.rb`工具(在Redis源码包的`utils`目录下)将这些节点连接起来,创建并初始化集群。 4. **分配槽**:Redis集群通过槽(Slot)来管理数据分布,共有16384个槽,每个键根据哈希值被...

    SpringBoot+SpringCloud面试题.doc

    `bootstrap.properties`用于加载外部配置,如Config Server,常用于环境初始化。 4. **Spring Cloud的作用** - Spring Cloud建立在Spring Boot之上,提供了服务发现(如Eureka)、配置管理(如Config Server)、...

    SpringBoot项目+MybatisPlus使用+Redis缓存

    1. **MybatisPlus整合Redis**:在需要缓存的查询方法上添加`@Cacheable`注解,通过Spring Cache抽象层,将结果存储到Redis中。下次请求相同数据时,直接从缓存获取,提高响应速度。 2. **RedisTemplate与...

    redis的服务端,客户端,整合spring配置文件

    3. 初始化集群,使用`redis-trib.rb`(在`redis-tools`目录下)创建集群。 4. 分配槽(slots)以平衡数据分布。 5. 将客户端连接到集群,进行读写操作。 三、Redis服务端与客户端 Redis服务端是实际运行的Redis实例...

    Spring Boot 整合 Redis.docx

    Spring Boot是一个流行的Java框架,用于简化Spring应用的初始化和配置。整合Redis作为缓存解决方案,可以利用其高效的数据存储和检索能力。以下是如何在Spring Boot中整合Redis的详细步骤: ### 1. 安装Redis 首先...

Global site tag (gtag.js) - Google Analytics