java - Spring 应用程序运行失败
问题描述
我可以通过 ./gradlew build -x test 成功构建我的代码,但是,当我启动我的应用程序时,它显示
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')
}
我认为这可能是那些版本的问题,但我不确定。另一方面,我发现的大多数解决方案都是 marven,我的应用程序的启动是这样的:
@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
解决方案
您正在使用绑定到 Spring Boot 1.5 的 Spring Cloud 1.2。您已定义使用 Spring Boot 2.0,因此同一框架的 jar 版本不兼容。
接下来,您还手动包含了 elasticsearch 依赖项,而不是使用 Spring Boot 提供的启动器,可能又会引入另一个不兼容的 Spring 版本。
简而言之,你的依赖是一团糟。为选定的 Spring Boot 版本或副版本使用正确的 Spring Cloud 版本。所以要么将 Spring Cloud 版本升级到 2.x 版本,要么降低你正在使用的 Spring Boot 版本。
最后添加spring-boot-starter-data-elasticsearch
而不是spring-data-elasticsearch
依赖项以获得正确管理的版本。
推荐阅读
- vue.js - 无法在 chrome 中解码下载的字体
- c++ - 为什么我的删除按钮没有删除 QHBoxLayout 上的所有小部件
- java - Java 8:替换传统的 for 循环
- websocket - WebSocket 连接到“ws://192.168.5.78:8080/Chat-WebSocket/server.php”失败:连接建立错误:net::ERR_CONNECTION_REFUSED
- firebase - Firebase 托管仅部署 2 个文件
- java - PDFxStream 无法正确显示日语文本
- c++ - 识别调用者对象
- c# - 循环内的 async/await 是否会造成瓶颈?
- swift - 在日期选择器中获取不可用的日期(Swift)
- django - 如果我不提交 django 迁移怎么办?