Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a compatibility matrix of Spring-boot and Spring-cloud?

I am wondering if a compatibility matrix exists between Springboot and Springcloud?

I created a simple project on STS and am running into compatibility issues.

   <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>1.5.1.RELEASE</version>         <relativePath /> <!-- lookup parent from repository -->     </parent>   <dependencyManagement>     <dependencies>         <dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-dependencies</artifactId>             <version>Camden.SR5</version>             <type>pom</type>             <scope>import</scope>         </dependency>     </dependencies> </dependencyManagement> 

Having a good view of the supported versions of both Springboot and Springcloud will make things simpler.

I did observe an open issue that talks about this need - https://github.com/spring-cloud/spring-cloud-build/issues/43

Does the community have an approach on how they choose to get started on a specific version combination when they embark on a SpringCloud project?

Edit: Adding another instance of such a problem that I encountered since yesterday

snippets from pom.xml

<parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>          <version>1.5.2.RELEASE</version>         <!--<version>1.5.2.RELEASE</version> -->         <relativePath /> <!-- lookup parent from repository -->     </parent>       <dependencyManagement>         <dependencies>             <dependency>                 <groupId>org.springframework.cloud</groupId>                 <artifactId>spring-cloud-dependencies</artifactId>                 <!-- <version>Camden.SR6</version -->                 <!-- <version>Brixton.SR5</version> -->                 <!--  <version>Camden.SR6</version> -->                 <version>Camden.SR5</version>                 <type>pom</type>                 <scope>import</scope>             </dependency>         </dependencies>     </dependencyManagement> 

There are no maven errors in using 1.5.2.RELEASE with Camden.SR5 however when the app starts it throws the NoClassDefFoundError.

2017-03-28 09:51:15.148 ERROR 15808 --- [           main] o.s.boot.SpringApplication               : Application startup failed  java.lang.NoClassDefFoundError: org/springframework/cloud/context/named/NamedContextFactory$Specification     at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_112]     at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[na:1.8.0_112]     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_112]     at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) ~[na:1.8.0_112]     at java.net.URLClassLoader.access$100(URLClassLoader.java:73) ~[na:1.8.0_112]     at java.net.URLClassLoader$1.run(URLClassLoader.java:368) ~[na:1.8.0_112]     at java.net.URLClassLoader$1.run(URLClassLoader.java:362) ~[na:1.8.0_112]     at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_112]     at java.net.URLClassLoader.findClass(URLClassLoader.java:361) ~[na:1.8.0_112]     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_112]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_112]     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_112]     at org.springframework.cloud.netflix.feign.FeignClientsRegistrar.registerClientConfiguration(FeignClientsRegistrar.java:367) ~[spring-cloud-netflix-core-1.2.5.RELEASE.jar:1.2.5.RELEASE]     at org.springframework.cloud.netflix.feign.FeignClientsRegistrar.registerDefaultConfiguration(FeignClientsRegistrar.java:104) ~[spring-cloud-netflix-core-1.2.5.RELEASE.jar:1.2.5.RELEASE]     at org.springframework.cloud.netflix.feign.FeignClientsRegistrar.registerBeanDefinitions(FeignClientsRegistrar.java:87) ~[spring-cloud-netflix-core-1.2.5.RELEASE.jar:1.2.5.RELEASE]     at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:352) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]     at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:143) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]     at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:116) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]     at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:320) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]     at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]     at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:270) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]     at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:93) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]     at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:524) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]     at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]     at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]     at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]     at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]     at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]     at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]     at com.forecastessentials.school.SchoolUniformForecastApplication.main(SchoolUniformForecastApplication.java:12) [classes/:na] Caused by: java.lang.ClassNotFoundException: org.springframework.cloud.context.named.NamedContextFactory$Specification     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_112]     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_112]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_112]     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_112]     ... 31 common frames omitted 

Using 1.4.5 with Brixton.SR6 is a combination that generally works well for me.

like image 466
Manglu Avatar asked Mar 07 '17 22:03

Manglu


People also ask

Which version of spring Cloud is compatible with Spring Boot?

Spring Cloud 2021.0. 3 is available. Compatible with Spring Boot 2.7.

Is Spring Cloud included in Spring Boot?

Spring boot is a java based framework to work con auto-configuration in Web Application. Spring cloud is part of Spring boot, where Spring boot is Stand Alone, App – Centric Application framework. The main purpose of Spring Cloud maintains the traffic of the network.

What is the difference between Spring Boot and spring Cloud?

It uses various components of Spring framework. It is a framework to develop Restful API and microservices quickly. It is similar to Spring framework but comes with some features like auto-configurators, starters, cli, etc. We can quickly develop and run standalone web applications and microservices at very less time.


1 Answers

Here is the release train Spring Boot compatibility table. Below the table, there is a note that the Camden release train builds on Spring Boot 1.4.x, but is also tested with 1.5.x.

You can also read the release notes for each release which notes compatible component versions:

Spring Cloud Camden builds on Spring Boot 1.4.x.

But later:

Adds Boot 1.5 compatibility and breaks Boot 1.3 compatibility

like image 124
Strelok Avatar answered Sep 20 '22 08:09

Strelok