问题描述
我正在尝试在spring数据流中实现POC。我正在使用“ spring-cloud-starter-dataflow-server-local”依赖性在本地创建数据流服务器。但是它给出了以下错误:
ERROR org.springframework.boot.SpringApplication - Application run Failed
java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava/lang/Object;)V
at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:161)
at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:102)
at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:68)
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:76)
at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:53)
at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:345)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
at com.ms.batch_ui.App.main(App.java:14)
下面是pom.xml
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ms</groupId>
<artifactId>abc-ui</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>abc-ui</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
</parent>
<properties>
<java.version>8</java.version>
<h2.version>1.4.193</h2.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-dataflow-server-local</artifactId>
<version>1.6.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
</dependencies>
</project>
@EnableDataFlowServer
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
我认为该错误可能是由于本地数据流服务器和Spring Boot之间的版本兼容性问题引起的,但是我找不到正确的版本。 我也在https://github.com/spring-cloud/spring-cloud-dataflow/releases中进行了搜索,但是这里没有给出spring-cloud-starter-dataflow-server-local。
请帮助我提供正确的版本矩阵。
解决方法
您正在使用Spring Cloud Data Flow版本- Edgware.SR4 。它与 Spring Boot 1.5.14 兼容。
例如:与2.3.3版本兼容的Hoxton.SR8(春季云版本)(春季启动) 参考:https://github.com/spring-cloud/spring-cloud-dataflow/releases?after=v1.7.4.RELEASE
您将收到上述异常,因为您没有添加弹簧云dependencyMangement
块。但是您需要一个针对Spring Cloud的依赖项管理块(Spring Cloud技术需要此块-Spring Cloud Ribbon,Spring Cloud Zuul等一堆技术)。
也添加它,
<properties>
<java.version>8</java.version>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
我建议您使用start.spring.io创建一个Spring Boot项目,添加所需的依赖项,选择您的Spring Boot所需版本,该版本提供与Spring Cloud兼容的版本,而不是自己手动选择。
注意: 您可以通过向下滚动并使用下一步按钮查看同一页面中的所有兼容版本(spring boot和spring cloud数据流)