转自: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。
再次运行,成功!!
相关推荐
3. Spring Boot:简化Spring应用的初始化和配置,自动配置特性。 4. Spring Cloud:为微服务提供了一套完整的服务发现、配置、熔断、路由等解决方案。 以上是针对标题和描述中提及的各个技术领域可能涉及到的面试...
SpringBoot是Spring框架的一个扩展,旨在简化Java应用的初始搭建以及开发过程。它预配置了许多常见的设置,如数据源、服务器、安全等,使得开发者可以快速地创建独立的、生产级别的基于Spring的应用。在本项目中,...
- **Spring Bean生命周期**:Spring容器负责管理Bean的生命周期,从创建、初始化到销毁。理解这些阶段有助于更好地管理和控制Bean的状态。 - **循环依赖问题**:在Spring中,Bean可以通过构造函数注入、setter注入...
SpringBoot 是一个由 Pivotal Team 创建的框架,它简化了 Spring 应用程序的初始搭建以及开发过程。它的核心特性可以嵌入到应用服务器中,也可以独立运行。通过简化 Maven 配置、自动配置和“起步依赖”(Starter ...
在项目中,`data.sql`和`table.sql`可能是数据库初始化脚本,用于创建必要的表结构并填充初始数据。这在开发和测试环境中非常常见,可以快速搭建应用的基础环境。而`quotationsystem`可能是一个应用程序或服务的名称...
接着,编写Redis配置类,用于初始化RedisTemplate: ```java @Configuration public class RedisConfig { @Bean public RedisConnectionFactory redisConnectionFactory() { return new JedisConnectionFactory...
通过MyEclipse的New -> Dynamic Web Project创建项目,添加SSM相关的库和配置文件,完成项目的初始化。 这个压缩包简化了SSM的集成步骤,使得开发者可以更专注于业务逻辑的实现,而无需花费大量时间在环境配置上。...
10. **Chapter 17** - Spring Boot:简述Spring Boot快速开发框架,如何简化Spring应用的初始化和配置。包括自动配置、起步依赖和命令行界面等内容。 这些章节覆盖了Java EE开发中的关键技术和最佳实践,从基础到...
在实际项目中,开发者需要根据业务需求运行这些SQL语句来初始化数据库。 6. **源代码**:压缩包内可能包含的源代码包括Action类、Service接口和实现、DAO接口和实现、Mapper接口和XML映射文件,以及相关的配置文件...
**Spring Boot 整合 Redis 知识点详解** 在现代Web开发中,Spring Boot因其便捷的配置、快速的启动和强大的功能集而受到广泛的欢迎。其中,数据存储和缓存是系统性能优化的关键部分,而Redis作为一个高性能的键值...
总结来说,这个项目提供了一个使用SSM框架构建的Web应用,整合了Redis缓存、Druid数据源以及定时任务功能,同时包含了SQL脚本来创建数据库结构和初始化数据。MyEclipse 2014和Tomcat 8是开发和运行环境,用户可以...
SpringBoot可以简化项目的初始化和配置,提升开发效率。此外,通过Spring的缓存支持,我们可以集成Ehcache或Redis进行数据缓存,进一步优化性能。 总结,SpringMVC+Spring+MyBatis的整合提供了一种高效、可维护的...
此外,还可以考虑使用Spring Boot,它预设了许多配置,让项目初始化更加迅速。 总的来说,Spring MVC与MyBatis的整合提供了灵活的Web应用开发方式,允许开发者专注于业务逻辑,而非底层的数据库操作。随着对这两个...
在Java开发中,Spring框架是广泛应用...同时,别忘了在Spring的配置文件中设置Redis的相关属性,如主机地址、端口、密码等,以便正确地初始化连接。通过这样的配置,你就可以在Spring框架下充分利用Redis的强大功能了。
通常,会有一个简单的`main`方法,初始化SpringBoot应用并执行一些测试用例,确保Redis操作正确无误。 在提供的sql文件中,可能包含了用于测试的数据,例如,创建数据库表、插入初始数据等。这些数据可以用于模拟...
3. **创建集群**:使用`redis-trib.rb`工具(在Redis源码包的`utils`目录下)将这些节点连接起来,创建并初始化集群。 4. **分配槽**:Redis集群通过槽(Slot)来管理数据分布,共有16384个槽,每个键根据哈希值被...
`bootstrap.properties`用于加载外部配置,如Config Server,常用于环境初始化。 4. **Spring Cloud的作用** - Spring Cloud建立在Spring Boot之上,提供了服务发现(如Eureka)、配置管理(如Config Server)、...
1. **MybatisPlus整合Redis**:在需要缓存的查询方法上添加`@Cacheable`注解,通过Spring Cache抽象层,将结果存储到Redis中。下次请求相同数据时,直接从缓存获取,提高响应速度。 2. **RedisTemplate与...
3. 初始化集群,使用`redis-trib.rb`(在`redis-tools`目录下)创建集群。 4. 分配槽(slots)以平衡数据分布。 5. 将客户端连接到集群,进行读写操作。 三、Redis服务端与客户端 Redis服务端是实际运行的Redis实例...
Spring Boot是一个流行的Java框架,用于简化Spring应用的初始化和配置。整合Redis作为缓存解决方案,可以利用其高效的数据存储和检索能力。以下是如何在Spring Boot中整合Redis的详细步骤: ### 1. 安装Redis 首先...