【已解决】cannot access org.springframework.core.env.environment 问题

当遇到IDEA中的maven项目无法访问org.springframework.core.env.environment问题,尝试了更新版本、清理.m2文件夹等常规方法无效后,发现是maven将某个模块标记为了忽略状态。解决此问题的方法是在IDEA的设置中取消对被忽略模块的勾选,或者通过Maven面板的右键菜单选择Unignore Projects,从而恢复正常。

SpringApplication.run编译不通过,且报cannot access org/springframework/core/env/EnvironmentCapable

网上找的答案是:版本不一致

首先先删除.m2文件夹下所有
然后我把我的版本改到这个

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>

这种方法试过了,没什么效果,找了很久,最后发现在maven中看到我的service_sms是灰色的,说明该service_sms模块被maven忽略了至于为什么maven会被忽略,网上找了一下没找到原因,详见下图:
在这里插入图片描述
解决办法:

在IDEA中Settings–>Maven–>Ignored Files看看是不是有勾选的,去掉之后就解决了
在这里插入图片描述
或者通过这种快捷方式进行,点击右侧的maven–》选中灰色的模块–》右键–》点击Unignore Projects。效果和上面这种一样
在这里插入图片描述

java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@3cf7433e testClass = com.example.sseserver.HotMockInit, locations = [], classes = [com.example.sseserver.SseServerApplication], contextInitializerClasses = [], activeProfiles = ["cse-enable"], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [[ImportsContextCustomizer@68cc6319 key = [@com.huawei.vmall.mock.MockTestInterface(), @org.springframework.test.context.ActiveProfiles(inheritProfiles=true, profiles={"cse-enable"}, resolver=org.springframework.test.context.ActiveProfilesResolver.class, value={"cse-enable"}), @org.springframework.context.annotation.Import(value={com.ctrip.framework.apollo.spring.annotation.ApolloConfigRegistrar.class}), @org.springframework.boot.test.context.SpringBootTest(args={}, classes={com.example.sseserver.SseServerApplication.class}, properties={}, useMainMethod=NEVER, value={}, webEnvironment=MOCK), @org.apiguardian.api.API(consumers={"*"}, since="5.0", status=STABLE), @com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig(value={"application"}, order=2147483647), @org.springframework.test.context.BootstrapWith(value=org.springframework.boot.test.context.SpringBootTestContextBootstrapper.class)]], org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@1477089c, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@33b1c5c5, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@c5dc4a2, org.springframework.boot.test.web.reactive.server.WebTestClientContextCustomizer@5f9678e1, org.springframework.boot.test.web.reactor.netty.DisableReactorResourceFactoryGlobalResourcesContextCustomizerFactory$DisableReactorResourceFactoryGlobalResourcesContextCustomizerCustomizer@1d730606, org.springframework.boot.test.autoconfigure.OnFailureConditionReportContextCustomizerFactory$OnFailureConditionReportContextCustomizer@3016fd5e, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@674bd420, org.springframework.test.context.support.DynamicPropertiesContextCustomizer@0, org.springframework.boot.test.context.SpringBootTestAnnotation@31fcf0f1], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:200) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:139) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) at com.huawei.vmall.mock.hotswap.SpringDelegateRunner.agentStart(SpringDelegateRunner.java:125) at com.huawei.vmall.mock.hotswap.SpringDelegateRunner.runTestInWin(SpringDelegateRunner.java:100) at com.huawei.vmall.mock.hotswap.SpringDelegateRunner.runChild(SpringDelegateRunner.java:90) at com.huawei.vmall.mock.hotswap.SpringDelegateRunner.runChild(SpringDelegateRunner.java:49) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61) at org.junit.rules.RunRules.evaluate(RunRules.java:20) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) at com.huawei.vmall.mock.hotswap.SpringDelegateRunner.run(SpringDelegateRunner.java:234) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55) Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'vmallCarLock': Unsatisfied dependency expressed through field 'vmallLockService': Error creating bean with name 'vmallLockService': Unsatisfied dependency expressed through field 'baseLockFactory': Error creating bean with name 'baseLockFactory': Unsatisfied dependency expressed through field 'redisLockClient': Error creating bean with name 'redisLockClient': Unsatisfied dependency expressed through field 'redisLock': Error creating bean with name 'redisLock' defined in class path resource [com/huawei/vmall/lock/config/redis/RedisLockConfig.class]: Failed to instantiate [com.huawei.vmall.commons.client.VmallRedisClient]: Factory method 'redisLock' threw exception with message: Range [0, -1) out of bounds for length 0 at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:788) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:768) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:146) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:509) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1459) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:606) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1222) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1188) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1123) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:987) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:144) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1461) at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:563) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:144) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:110) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152) ... 34 more Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'vmallLockService': Unsatisfied dependency expressed through field 'baseLockFactory': Error creating bean with name 'baseLockFactory': Unsatisfied dependency expressed through field 'redisLockClient': Error creating bean with name 'redisLockClient': Unsatisfied dependency expressed through field 'redisLock': Error creating bean with name 'redisLock' defined in class path resource [com/huawei/vmall/lock/config/redis/RedisLockConfig.class]: Failed to instantiate [com.huawei.vmall.commons.client.VmallRedisClient]: Factory method 'redisLock' threw exception with message: Range [0, -1) out of bounds for length 0 at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:788) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:768) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:146) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:509) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1459) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:606) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1690) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1635) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:785) ... 61 more Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'baseLockFactory': Unsatisfied dependency expressed through field 'redisLockClient': Error creating bean with name 'redisLockClient': Unsatisfied dependency expressed through field 'redisLock': Error creating bean with name 'redisLock' defined in class path resource [com/huawei/vmall/lock/config/redis/RedisLockConfig.class]: Failed to instantiate [com.huawei.vmall.commons.client.VmallRedisClient]: Factory method 'redisLock' threw exception with message: Range [0, -1) out of bounds for length 0 at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:788) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:768) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:146) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:509) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1459) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:606) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1690) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1635) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:785) ... 74 more Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'redisLockClient': Unsatisfied dependency expressed through field 'redisLock': Error creating bean with name 'redisLock' defined in class path resource [com/huawei/vmall/lock/config/redis/RedisLockConfig.class]: Failed to instantiate [com.huawei.vmall.commons.client.VmallRedisClient]: Factory method 'redisLock' threw exception with message: Range [0, -1) out of bounds for length 0 at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:788) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:768) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:146) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:509) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1459) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:606) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1690) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1635) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:785) ... 87 more Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisLock' defined in class path resource [com/huawei/vmall/lock/config/redis/RedisLockConfig.class]: Failed to instantiate [com.huawei.vmall.commons.client.VmallRedisClient]: Factory method 'redisLock' threw exception with message: Range [0, -1) out of bounds for length 0 at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:657) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:489) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1375) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1205) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1690) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1635) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:785) ... 100 more Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.huawei.vmall.commons.client.VmallRedisClient]: Factory method 'redisLock' threw exception with message: Range [0, -1) out of bounds for length 0 at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:200) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiateWithFactoryMethod(SimpleInstantiationStrategy.java:89) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:169) at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ... 112 more Caused by: java.lang.StringIndexOutOfBoundsException: Range [0, -1) out of bounds for length 0 at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:55) at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:52) at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:213) at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:210) at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:98) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromToIndex(Preconditions.java:112) at java.base/jdk.internal.util.Preconditions.checkFromToIndex(Preconditions.java:349) at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4865) at java.base/java.lang.String.substring(String.java:2834) at redis.clients.jedis.HostAndPort.from(HostAndPort.java:51) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1715) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) at redis.clients.jedis.JedisSentinelPool.parseHostAndPorts(JedisSentinelPool.java:201) at redis.clients.jedis.JedisSentinelPool.<init>(JedisSentinelPool.java:155) at redis.clients.jedis.JedisSentinelPool.<init>(JedisSentinelPool.java:145) at redis.clients.jedis.JedisSentinelPool.<init>(JedisSentinelPool.java:136) at com.huawei.vmall.commons.core.redis.VmallRedisSentinel.<init>(VmallRedisSentinel.java:71) at com.huawei.vmall.commons.client.init.redis.VmallRedisSentinelInit.init(VmallRedisSentinelInit.java:25) at com.huawei.vmall.commons.client.VmallRedisClient.init(VmallRedisClient.java:68) at com.huawei.vmall.lock.config.redis.RedisLockConfig.redisLock(RedisLockConfig.java:66) at com.huawei.vmall.lock.config.redis.RedisLockConfig$$SpringCGLIB$$0.CGLIB$redisLock$0(<generated>) at com.huawei.vmall.lock.config.redis.RedisLockConfig$$SpringCGLIB$$FastClass$$1.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:400) at com.huawei.vmall.lock.config.redis.RedisLockConfig$$SpringCGLIB$$0.redisLock(<generated>) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:172) ... 115 more
最新发布
12-04
### 三级标题:问题分析 在Spring Boot项目中,如果遇到类似 `Cannot instantiate interface org.springframework.boot.SpringApplicationRunListener` 的错误,通常与Spring框架的自动装配或依赖注入机制有关。这种错误表明Spring在尝试实例化一个接口时失败了,而接口本身是不能直接实例化的,只能通过其具体的实现类进行实例化。 ### 三级标题:可能原因 1. **配置错误**:在Spring Boot的配置文件(如`application.yml`或`application.properties`)中,可能存在错误地直接引用了接口而非其具体实现类的情况。 2. **依赖缺失**:项目中可能缺少某些必要的依赖,导致Spring无法找到合适的实现类来注入。 3. **自定义监听器或扩展点错误**:如果用户尝试自定义`SpringApplicationRunListener`或其他Spring Boot扩展点,并且在`spring.factories`文件中配置了错误的类,也可能导致此问题。 4. **版本不兼容**:Spring Boot与其他库(如Spring Cloud或Spring Cloud Alibaba)之间的版本不兼容,可能导致某些接口无法正确加载。 ### 三级标题:解决方案 1. **检查配置文件**: - 确保在配置文件中没有直接使用接口作为Bean的实现类。 - 检查`@Bean`注解或XML配置中是否引用了正确的实现类而非接口。 2. **检查依赖管理**: - 确保`pom.xml`或`build.gradle`中包含了所有必要的依赖,尤其是与Spring Boot和相关扩展(如Spring Cloud)相关的依赖。 - 如果使用了Spring Cloud Alibaba,确保引入了正确的`spring-cloud-starter-alibaba`依赖。 3. **检查`spring.factories`文件**: - 如果项目中自定义了`SpringApplicationRunListener`,确保在`src/main/resources/META-INF/spring.factories`文件中正确配置了实现类。 - 示例配置: ```properties org.springframework.boot.SpringApplicationRunListener=\ com.example.CustomSpringApplicationRunListener ``` 4. **版本兼容性检查**: - 确保Spring Boot、Spring Cloud以及Spring Cloud Alibaba的版本之间兼容。可以参考Spring官方文档中的版本兼容性矩阵。 - 如果使用了较新的Spring Boot版本,确保其他依赖库也支持该版本。 5. **清理和重新构建项目**: - 有时,构建工具的缓存可能导致问题。尝试清理项目并重新构建: ```bash mvn clean install ``` 或者使用Gradle: ```bash ./gradlew clean build ``` 6. **日志分析**: - 查看完整的错误堆栈信息,定位具体是哪个类导致了问题。 - 检查是否有其他相关的警告或错误信息,这些信息可能提供进一步的线索。 ### 三级标题:示例代码 如果需要自定义`SpringApplicationRunListener`,可以按照以下步骤实现: 1. 创建一个实现`SpringApplicationRunListener`的类: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplicationRunListener; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.env.ConfigurableEnvironment; public class CustomSpringApplicationRunListener implements SpringApplicationRunListener { public CustomSpringApplicationRunListener(SpringApplication application, String[] args) { // 初始化逻辑 } @Override public void starting() { System.out.println("Application is starting"); } @Override public void environmentPrepared(ConfigurableEnvironment environment) { System.out.println("Environment is prepared"); } @Override public void contextPrepared(ConfigurableApplicationContext context) { System.out.println("Context is prepared"); } @Override public void contextLoaded(ConfigurableApplicationContext context) { System.out.println("Context is loaded"); } @Override public void started(ConfigurableApplicationContext context) { System.out.println("Application has started"); } @Override public void running(ConfigurableApplicationContext context) { System.out.println("Application is running"); } @Override public void failed(ConfigurableApplicationContext context, Throwable exception) { System.out.println("Application failed to start"); } } ``` 2. 在`spring.factories`文件中注册该类: ```properties org.springframework.boot.SpringApplicationRunListener=\ com.example.CustomSpringApplicationRunListener ``` ### 三级标题:总结 通过检查配置文件、依赖管理、自定义扩展点以及版本兼容性,可以解决`Cannot instantiate interface org.springframework.boot.SpringApplicationRunListener`的问题。确保所有接口的实现类都正确配置,并且项目依赖库之间没有冲突。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值