我可以通过./gradlew build -x测试成功构建代码,但是,当我启动我的应用程序时,它显示
java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava/lang/Object;)V
以下是我的build.gradle的依赖项:
buildscript {
repositories {
mavenLocal()
maven {
url "https://cdn.lfrs.sl/repository.liferay.com/nexus/content/groups/public"
}
mavenCentral()
jcenter()
}
ext {
projectVersion = '1.3.0-RELEASE'
grpcVersion = '1.6.1'
protobufVersion = '3.3.0'
protobufGradlePluginVersion = '0.8.0'
springCloudConsulVersion = '1.2.1.RELEASE'
springBootVersion = '2.0.5.RELEASE'
}
dependencies {
classpath "gradle.plugin.com.liferay:gradle-plugins-node:4.3.0"
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
configurations {
providedRuntime
compile.exclude module: 'spring-boot-starter-tomcat'
all*.exclude module: 'spring-boot-starter-logging'
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web"){
exclude module: "spring-boot-starter-tomcat"
}
compile "org.springframework.cloud:spring-cloud-starter-consul-discovery:${springCloudConsulVersion}"
compile group: 'org.springframework.data', name: 'spring-data-elasticsearch', version: '3.1.5.RELEASE'
compile('org.hibernate:hibernate-validator:5.4.1.Final')
}
我认为这些版本可能存在问题,但我不确定。另一方面,我发现的大多数解决方案都很出色,我的应用程序的启动是这样的:
@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
答案 0 :(得分:0)
您正在使用绑定到Spring Boot 1.5的Spring Cloud 1.2。您已定义为使用Spring Boot 2.0,因此使用的是同一框架的jar的不兼容版本。
接下来,您还手动添加了elasticsearch依赖项,而不是使用Spring Boot提供的启动程序,很可能再次引入了另一个不兼容的Spring版本。
简而言之,您的依赖关系一团糟。为所选的Spring Boot版本或Vice版本使用正确的Spring Cloud版本。因此,要么将Spring Cloud版本升级到2.x版本,要么降低所使用的Spring Boot版本。
最后添加spring-boot-starter-data-elasticsearch
而不是spring-data-elasticsearch
依赖项以得到正确管理的版本。