其实springboot 整合eureka 是比较简单 ,可是我发现很多人整合后会启动不了,我这里列出比较常见的报错的原因
报:a child container failed during start
如图下这样
这个原因是因为pom.xml 没有添加
<dependencymanagement> <dependencies> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-dependencies</artifactid> <version>finchley.sr1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencymanagement>
假如添加后依然报错:
报错原因是因为springboot 与 springcloud 版本不配对
修改后就行正常运行了!最后把他们相对应的版本贴出来,可以看着相对应的springboot版本改springcloud
spring boot spring cloud
1.2.x angel版本
1.3.x brixton版本
1.4.x stripes camden版本
1.5.x dalston版本、edgware版本
2.0.x finchley版本
springcloud异常(euruka)application run failed java.lang.nosuchmethoderror: org.springframework.boot.builder.springapplicationbuilder
在测试euruka作为服务注册中心的时候碰到了这个问题,错误提示如下:
c:\program files\java\jdk1.8.0_161\bin\java -xx:tieredstopatlevel=1 -........ com.fangxing.springcloud.eurukaserver.eurukaserverapplication15:04:35.690 [main] debug org.springframework.boot.context.logging.classpathloggingapplicationlistener - application failed to start with classpath: ....... file:/d:/program%20files/jetbrains/intellij%20idea%202017.3.5/lib/idea_rt.jar]15:04:35.867 [background-preinit] debug org.jboss.logging - logging provider: org.jboss.logging.log4j2loggerprovider15:04:35.869 [background-preinit] info org.hibernate.validator.internal.util.version - hv000001: hibernate validator 6.0.7.final15:04:35.884 [background-preinit] debug org.hibernate.validator.internal.engine.resolver.traversableresolvers - cannot find javax.persistence.persistence on classpath. assuming non jpa 2 environment. all properties will per default be traversable.15:04:35.890 [background-preinit] debug org.hibernate.validator.internal.xml.validationxmlparser - trying to load meta-inf/validation.xml for xml based validator configuration.15:04:35.892 [background-preinit] debug org.hibernate.validator.internal.xml.resourceloaderhelper - trying to load meta-inf/validation.xml via tccl15:04:35.893 [background-preinit] debug org.hibernate.validator.internal.xml.resourceloaderhelper - trying to load meta-inf/validation.xml via hibernate validator's class loader15:04:35.894 [background-preinit] debug org.hibernate.validator.internal.xml.validationxmlparser - no meta-inf/validation.xml found. using annotation based configuration only.15:04:36.086 [background-preinit] debug org.hibernate.validator.messageinterpolation.resourcebundlemessageinterpolator - loaded expression factory via original tccl15:04:36.090 [background-preinit] debug org.hibernate.validator.internal.engine.validatorfactoryimpl - hv000234: using org.hibernate.validator.messageinterpolation.resourcebundlemessageinterpolator as validatorfactory-scoped message interpolator.15:04:36.090 [background-preinit] debug org.hibernate.validator.internal.engine.validatorfactoryimpl - hv000234: using org.hibernate.validator.internal.engine.resolver.traversealltraversableresolver as validatorfactory-scoped traversable resolver.15:04:36.090 [background-preinit] debug org.hibernate.validator.internal.engine.validatorfactoryimpl - hv000234: using org.hibernate.validator.internal.util.executableparameternameprovider as validatorfactory-scoped parameter name provider.15:04:36.090 [background-preinit] debug org.hibernate.validator.internal.engine.validatorfactoryimpl - hv000234: using org.hibernate.validator.internal.engine.defaultclockprovider as validatorfactory-scoped clock provider.15:04:36.090 [background-preinit] debug org.hibernate.validator.internal.engine.validatorfactoryimpl - hv000234: using org.hibernate.validator.internal.engine.scripting.defaultscriptevaluatorfactory as validatorfactory-scoped script evaluator factory.15:04:36.404 [main] error org.springframework.boot.springapplication - application run failedjava.lang.nosuchmethoderror: org.springframework.boot.builder.springapplicationbuilder.<init>([ljava/lang/object;)v at org.springframework.cloud.bootstrap.bootstrapapplicationlistener.bootstrapservicecontext(bootstrapapplicationlistener.java:120) at org.springframework.cloud.bootstrap.bootstrapapplicationlistener.onapplicationevent(bootstrapapplicationlistener.java:84) at org.springframework.cloud.bootstrap.bootstrapapplicationlistener.onapplicationevent(bootstrapapplicationlistener.java:62) at org.springframework.context.event.simpleapplicationeventmulticaster.doinvokelistener(simpleapplicationeventmulticaster.java:172) at org.springframework.context.event.simpleapplicationeventmulticaster.invokelistener(simpleapplicationeventmulticaster.java:165) at org.springframework.context.event.simpleapplicationeventmulticaster.multicastevent(simpleapplicationeventmulticaster.java:139) at org.springframework.context.event.simpleapplicationeventmulticaster.multicastevent(simpleapplicationeventmulticaster.java:127) at org.springframework.boot.context.event.eventpublishingrunlistener.environmentprepared(eventpublishingrunlistener.java:74) at org.springframework.boot.springapplicationrunlisteners.environmentprepared(springapplicationrunlisteners.java:54) at org.springframework.boot.springapplication.prepareenvironment(springapplication.java:351) at org.springframework.boot.springapplication.run(springapplication.java:317) at org.springframework.boot.springapplication.run(springapplication.java:1246) at org.springframework.boot.springapplication.run(springapplication.java:1234) at com.fangxing.springcloud.eurukaserver.eurukaserverapplication.main(eurukaserverapplication.java:16)process finished with exit code 1
其根本原因是依赖包的版本冲突,我的这个pom.xml文件如下:
<?xml version="1.0" encoding="utf-8"?><project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>com.fangxing.springcloud</groupid> <artifactid>euruka-server</artifactid> <version>0.0.1-snapshot</version> <packaging>jar</packaging> <name>euruka-server</name> <description>demo project for eureka server</description> <parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>2.0.0.release</version> <relativepath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <project.reporting.outputencoding>utf-8</project.reporting.outputencoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframewor k.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-starter-eureka-server</artifactid> </dependency> </dependencies> <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></project>
这里用到的springboot版本为2.0.0.0版本,我们调整一下版本,改用下面的pom.xml
<?xml version="1.0" encoding="utf-8"?><project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>com.fangxing.springcloud</groupid> <artifactid>euruka-server</artifactid> <version>0.0.1-snapshot</version> <packaging>jar</packaging> <name>euruka-server</name> <description>demo project for eureka server</description> <!--基于springboot--> <parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>1.4.0.release</version> <relativepath/> </parent> <properties> <!--设置字符编码及java版本--> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <java.version>1.8</java.version> </properties> <dependencies> <!--增加eureka-server的依赖--> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-starter-eureka-server</artifactid> </dependency> <!--用于测试的,本例可省略--> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> </dependencies> <!--依赖管理,用于管理spring-cloud的依赖,其中camden.sr3是版本号--> <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></project>
启用正常。
以上就是springboot整合eureka启动失败如何解决的详细内容。