本文集体博客地址:https://www.leafage.top/posts/detail/21622MARQ
记录一个redis的异样,明天更新测试环境的服务,该服务中应用了 spring-boot-starter-data-redis 的依赖,在公布测试的时候报错了,很难堪。为啥呢,我本地运行的好好的呀。。。(是不是你的日常?)。
这个错的具体信息如下:
6 2021-06-22 09:23:17,291 [application-name] [main] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisConnectionFactory' defined in class path resource [org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory]: Factory method 'redisConnectionFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfig 7 2021-06-22 09:23:17,343 [application-name] [main] ERROR o.s.b.SpringApplication - Application run failed 8 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisConnectionFactory' defined in class path resource [org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory]: Factory method 'redisConnectionFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfig 9 at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:657) 10 at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:637) 11 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1341) 12 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1181) 13 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556) 14 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) 15 at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324) 16 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) 17 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) 18 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) 19 at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897) 20 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879) 21 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551) 22 at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) 23 at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) 24 at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) 25 at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405) 26 at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) 27 at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) 28 at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) 29 at com.ichinae.imis.MgrApplication.main(MgrApplication.java:20) 30 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 31 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 32 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 33 at java.lang.reflect.Method.invoke(Method.java:498) 34 at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) 35 at org.springframework.boot.loader.Launcher.launch(Launcher.java:107) 36 at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) 37 at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88) 38 Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory]: Factory method 'redisConnectionFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfig 39 at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) 40 at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:652) 41 ... 28 common frames omitted 42 Caused by: java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfig 43 at org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration$LettucePoolingClientConfigurationBuilder.<init>(LettucePoolingClientConfiguration.java:94) 44 at org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration.builder(LettucePoolingClientConfiguration.java:51) 45 at org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration$PoolBuilderFactory.createBuilder(LettuceConnectionConfiguration.java:159) 46 at org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration.createBuilder(LettuceConnectionConfiguration.java:107) 47 at org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration.getLettuceClientConfiguration(LettuceConnectionConfiguration.java:92) 48 at org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration.redisConnectionFactory(LettuceConnectionConfiguration.java:74) 49 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 50 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 51 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 52 at java.lang.reflect.Method.invoke(Method.java:498) 53 at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) 54 ... 29 common frames omitted 55 Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool2.impl.GenericObjectPoolConfig 56 at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 57 at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 58 at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151) 59 at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 60 ... 40 common frames omitted
像平常一样,copy 异样信息,粘贴的google搜一下,而后介绍的都是价格以apache common pool2 的依赖,而后还有居然说重建一个我的项目到。。。(兄弟你搞笑的吧)。
来说下这个异样的起因,报这个错的去看下你的配置文件中是不是配置了 lettuce.pool 的配置信息,
如果有那就对了,解决的办法有两个:
因为启动时来加载器找不到common-pool2的相干类,那么就给它把相干类引入,增加依赖:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId></dependency>
- 移除lettuce.pool的配置,如果你都用不到,或者都是复制过去的配置,就用默认的就能够,删除这个相干配置。