JedisPoolConfig n'est pas assignable à GenericObjectPoolConfig
J'ai un Printemps java application web hébergée sur Heroku. Je suis d'essayer d'utiliser le Ressort de la mise en Cache de l'abstraction en utilisant le Redis mise en œuvre. Lorsque le serveur démarre, j'obtiens un message d'erreur disant:
Type 'redis/clients/jedis/JedisPoolConfig' (current frame, stack[3]) is not assignable to 'org/apache/commons/pool2/impl/GenericObjectPoolConfig'
Voici ma configuration:
@Bean
RedisConnectionFactory jedisConnectionFactory() throws Exception {
URI redisUri = new URI(System.getenv("REDISCLOUD_URL"));
JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory();
redisConnectionFactory.setHostName(redisUri.getHost());
redisConnectionFactory.setPort(redisUri.getPort());
redisConnectionFactory.setPassword(redisUri.getUserInfo().split(":",2)[1]);
redisConnectionFactory.setUsePool(true);
return redisConnectionFactory;
}
@Bean
RedisTemplate<Object, Object> redisTemplate() {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<Object, Object>();
try {
redisTemplate.setConnectionFactory(jedisConnectionFactory());
} catch (Exception e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
return redisTemplate;
}
@Override
@Bean
public CacheManager cacheManager() {
//configure and return an implementation of Spring's CacheManager SPI
RedisCacheManager manager = new RedisCacheManager(redisTemplate());
List<String> caches = new ArrayList<String>();
caches.add("Suppliers");
caches.add("Manufacturer");
caches.add("Sheeting");
caches.add("SignTypeFlat");
manager.setCacheNames(caches);
return manager;
}
Voici l'intégralité du Message d'Erreur:
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory m ethod [org.springframework.data.redis.connection.RedisConnectionFactory com.signInventory.config.ProdDataSourceConfiguration.jedisConnectionFactory() throws java.lang.Exception] threw exception; 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.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:181) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:578) ... 36 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 com.signInventory.config.ProdDataSourceConfiguration.jedisConnectionFactory(ProdDataSourceConfiguration.java:46) at com.signInventory.config.ProdDataSourceConfiguration$$EnhancerByCGLIB$$258faa2b.CGLIB$jedisConnectionFactory$8(<generated>) at com.signInventory.config.ProdDataSourceConfiguration$$EnhancerByCGLIB$$258faa2b$$FastClassByCGLIB$$b4f3aedd.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:286) at com.signInventory.config.ProdDataSourceConfiguration$$EnhancerByCGLIB$$258faa2b.jedisConnectionFactory(<generated>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:160) ... 37 more
Toute aide serait grandement appréciée.
Merci!
Vous devez vous connecter pour publier un commentaire.
Eu exactement le même problème lorsque j'ai mis à jour pour le Printemps de Données Redis v1.2.1-COMMUNIQUÉ de presse. J'ai résolu le problème après la mise à niveau Jedis à la dernière version v2.4.2. Si vous utilisez Maven, vérifier les dépendances suivantes.
Espère que cela aide 🙂
Vous devez ajouter une référence à l'apache commons-pool2 de la bibliothèque. J'ai eu le même problème dans un projet Scala - nous avons été à l'aide de sbt, donc, c'était juste un cas d'ajout:
Que vous êtes à l'aide de Java, vous pouvez utiliser Maven, donc je m'attends il est probablement plus comme ça (non testé - le prendre avec une pincée de sel!):
Apparemment, c'est un JDK compilateur bug #8006684
Voir aussi taskdef java.lang.Exception verifyerror: Mauvais type sur des opérandes de pile au moment où l'ÉQUIPE de la VILLE exécute construire
Au cas où quelqu'un d'en face en raison de la migration de Printemps de Démarrage 1.5.x à 2.x.x ici est fil qui l'explique. Aussi s'il vous plaît voir cette lien