springcloud 需要和springboot搭配使用,而其中,对于初学者来说,版本的搭配是相对关键 .通常网上的教程都会有相应的版本搭配,而我因为已经是用了springboot 1.5.10 所以,只能挑选对应的springcloud版本,如果版本没挑选对,就会出现异常.
记录我花了两天的时间理出来的一个坑.
我的配置是这样的:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.10.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <all.version>0.0.1-SNAPSHOT</all.version> </properties> <modules> <module>test-common</module> <module>test-core</module> <module>test-uapp</module> </modules> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Camden.SR3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
于是就报了这个错,
2018-03-15 23:27:54.141 INFO 2772 --- [ main] c.jmsw.uapp.sys.EurekaserverApplication : No active profile set, falling back to default profiles: default 2018-03-15 23:27:54.153 INFO 2772 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5ef6ae06: startup date [Thu Mar 15 23:27:54 CST 2018]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@35047d03 2018-03-15 23:27:54.192 WARN 2772 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.jmsw.uapp.sys.EurekaserverApplication]; nested exception is java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.cloud.netflix.eureka.server.EurekaServerConfiguration 2018-03-15 23:27:54.202 ERROR 2772 --- [ main] o.s.boot.SpringApplication : Application startup failed org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.jmsw.uapp.sys.EurekaserverApplication]; nested exception is java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.cloud.netflix.eureka.server.EurekaServerConfiguration at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:616) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:299) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:245) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:198) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:167) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:308) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:272) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:92) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:687) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:525) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE] at com.jmsw.uapp.sys.EurekaserverApplication.main(EurekaserverApplication.java:13) [classes/:na] Caused by: java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.cloud.netflix.eureka.server.EurekaServerConfiguration at org.springframework.core.type.StandardAnnotationMetadata.getAnnotatedMethods(StandardAnnotationMetadata.java:163) ~[spring-core-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser.retrieveBeanMethodMetadata(ConfigurationClassParser.java:380) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:314) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:245) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:606) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] ... 17 common frames omitted Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/context/embedded/FilterRegistrationBean at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_162] at java.lang.Class.privateGetDeclaredMethods(Unknown Source) ~[na:1.8.0_162] at java.lang.Class.getDeclaredMethods(Unknown Source) ~[na:1.8.0_162] at org.springframework.core.type.StandardAnnotationMetadata.getAnnotatedMethods(StandardAnnotationMetadata.java:152) ~[spring-core-4.3.14.RELEASE.jar:4.3.14.RELEASE] ... 21 common frames omitted Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.embedded.FilterRegistrationBean at java.net.URLClassLoader.findClass(Unknown Source) ~[na:1.8.0_162] at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0_162] at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) ~[na:1.8.0_162] at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0_162] ... 25 common frames omitted
或者就是启动成功了,但是无法访问sprincloud的那个网页 eureka ,
在经历了多次启动测试后,发现,它们两个之间的版本搭配尤其重要,也曾经在网上搜索资料
找到过这样的资料(转)
Spring Boot | Spring Cloud |
---|---|
1.2.x | Angel版本 |
1.3.x | Brixton版本 |
1.4.x | Camden版本 |
1.5.x | Dalston版本、Edgware版本 |
2.0.x | Finchley版本 |
备注:
1. 版本不对应可能造成maven编译项目时报错。
2. Spring Cloud 版本采用命名的方式,使用伦敦地铁站名。其中SRx为该版本的一个Service Release版本,x为一个递增的数字。例如:Dalston SR4。
于是我换成过对应的dalstion 版本,但是还是不行,后面去了SpringCloud官网, https://projects.spring.io/spring-cloud/
在官网上已经 有给出相应的搭配版本,,,直接复制下来就好了,,于是,我历时两天的问题居然只是去一趟官网就.......
于是我就把Springcloud的版本改成了Edgware.SR2 ,于是就启动成功
ps:记录下这个问题,相信不止我一个初学者会遇到这个问题,虽然很多教程上都有给出相匹配的版本搭配,不过还是需要去了解下,还有这个需要搭配对应的jdk,目前这个版本 最好使用jdk1.8 ,,千万不要使用9 .....