spring-boot - Spring Boot/Gradle/Querydsl项目有相同的依赖依赖不同版本的另一个依赖
问题描述
我在将 Querydsl 添加到我的 Spring Boot 项目时遇到问题。我的build.gradle
文件中有以下依赖项:
dependencies {
annotationProcessor 'com.querydsl:querydsl-apt:4.1.3:jpa'
annotationProcessor 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'com.querydsl:querydsl-jpa:4.1.3'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
implementation 'org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure:2.1.3.RELEASE'
implementation 'org.springframework.cloud:spring-cloud-config-client:2.1.0.RELEASE'
implementation 'mysql:mysql-connector-java'
implementation 'io.springfox:springfox-swagger2:2.9.2'
implementation 'io.springfox:springfox-swagger-ui:2.9.2'
implementation 'io.springfox:springfox-bean-validators:2.9.2'
implementation group: 'org.latencyutils', name: 'LatencyUtils', version: '2.0.3'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-inline:2.23.4'
}
该项目构建良好,但是当我运行它时,出现以下错误:
An attempt was made to call the method com.google.common.collect.FluentIterable.concat(Ljava/lang/Iterable;Ljava/lang/Iterable;)Lcom/google/common/collect/FluentIterable; but it does not exist. Its class, com.google.common.collect.FluentIterable, is available from the following locations:
jar:file:/C:/Users/me/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/18.0/cce0823396aa693798f8882e64213b1772032b09/guava-18.0.jar!/com/google/common/collect/FluentIterable.class
jar:file:/C:/Users/me/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/20.0/89507701249388e1ed5ddcf8c41f4ce1be7831ef/guava-20.0.jar!/com/google/common/collect/FluentIterable.class
It was loaded from the following location:
file:/C:/Users/me/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/18.0/cce0823396aa693798f8882e64213b1772032b09/guava-18.0.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of com.google.common.collect.FluentIterable
IntelliJ 中的 Gradle 窗口显示以下内容:
为什么每个实例都com.querydsl:querydsl-core:4.2.1
依赖于不同版本的番石榴?
解决方案
Guava 18.0 版本来自 querydsl,20.0 来自 spring-fox swagger。
spring-fox 库期望调用 guava 20.0 版的方法。但从 18.0. (因为类路径中有两个不同版本的番石榴库)
您可以使用以下代码来避免 guava 的冲突版本。
// QueryDsl
implementation("com.querydsl:querydsl-jpa:${querydslVersion}")
annotationProcessor("org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final")
annotationProcessor("com.querydsl:querydsl-apt:${querydslVersion}:jpa") {
exclude group: "come.google.guava"
}
annotationProcessor("com.google.guava:guava:20.0")
推荐阅读
- html - 宽度的锚标签问题
- java - 我有一个包含其他对象列表的 json 对象,并希望在 java 中将其转换为 HashMap
- java - 为 android 应用程序创建的选项菜单导致应用程序崩溃
- arrays - xquery for 循环和 if 条件并且应该只返回第一个值
- java - JSch 多个隧道/跳转主机
- c - 将指针数组结构传递给函数
- database - 如何在 JMeter-5 中添加 JDBC 请求采样器
- javascript - 如何从具有`Provider`上下文的同一组件调用`connect`来导入redux状态?
- artificial-intelligence - 为什么我的转置表这么慢?(4 倍减速)
- postgresql - 从容器内的烧瓶应用程序连接到 postgres 容器