Spring应用程序运行失败

时间:2019-04-17 23:01:40

标签: java spring spring-boot gradle build.gradle

我可以通过./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);
    }
}

1 个答案:

答案 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依赖项以得到正确管理的版本。