liquibase.integration.spring.SpringLiquibase 可从 spring 引导中的 2 个位置错误
liquibase.integration.spring.SpringLiquibase is available from 2 locations error in spring boot
我正在尝试将 spring boot 与 liquibase 集成,但是当我 运行 应用程序时它抛出以下错误:
An attempt was made to call the method liquibase.integration.spring.SpringLiquibase.setLiquibaseSchema(Ljava/lang/String;)V but it does not exist. Its class, liquibase.integration.spring.SpringLiquibase, is available from the following locations:
jar:file:/C:/Users/Dev/.gradle/caches/modules-2/files-2.1/org.liquibase/liquibase-core/3.5.5/c65051f327382018bd09c30380f25eac96f210da/liquibase-core-3.5.5.jar!/liquibase/integration/spring/SpringLiquibase.class
It was loaded from the following location:
file:/C:/Users/Dev/.gradle/caches/modules-2/files-2.1/org.liquibase/liquibase-core/3.5.5/c65051f327382018bd09c30380f25eac96f210da/liquibase-core-3.5.5.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of liquibase.integration.spring.SpringLiquibase
看来问题出在spring-boot-starter-data-jpa,我一去掉依赖,应用运行就没问题了。这是我的完整依赖列表,但我还需要 JPA 来编写我的持久性 类。
dependencies {
compile('org.springframework.boot:spring-boot-starter-actuator')
compile 'org.springframework.boot:spring-boot-starter-web'
runtime('org.postgresql:postgresql:42.2.5')
compile 'org.webjars:bootstrap:4.1.3'
compile 'org.webjars:webjars-locator-core'
compile("org.springframework.boot:spring-boot-starter-data-jpa")
compile("org.hibernate:hibernate-entitymanager:4.3.4.Final")
compile("org.hibernate:hibernate-validator:6.0.16.Final")
compile ("org.hibernate:hibernate-core:5.4.1.Final")
testCompile 'org.springframework.boot:spring-boot-starter-test'
compile("org.liquibase:liquibase-core:3.5.5")
liquibaseRuntime 'org.liquibase:liquibase-gradle-plugin:2.0.1'
liquibaseRuntime 'org.liquibase:liquibase-groovy-dsl:2.0.2'
liquibaseRuntime "org.liquibase:liquibase-core:3.5.5"
liquibaseRuntime 'org.postgresql:postgresql:42.2.5'
}
知道为什么不匹配吗?
提前致谢
听起来两个不同的依赖项包含一个重复的 jar。
Gradle里面好像有管理依赖的插件,看一下here。
从您的配置中删除版本:
compile("org.liquibase:liquibase-core")
让 Spring 依赖管理为您处理。
在我的例子中,升级到同时使用 Spring Boot 2.1.0.RELEASE
和 org.liquibase:liquibase-core:3.6.3
完全解决了这个问题。
我在我的 maven 项目中通过删除 POM 中的 Liquibase 版本解决了这个问题
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
</dependency>
没有版本就这样吧,Spring 会处理剩下的事情。
我正在尝试将 spring boot 与 liquibase 集成,但是当我 运行 应用程序时它抛出以下错误:
An attempt was made to call the method liquibase.integration.spring.SpringLiquibase.setLiquibaseSchema(Ljava/lang/String;)V but it does not exist. Its class, liquibase.integration.spring.SpringLiquibase, is available from the following locations:
jar:file:/C:/Users/Dev/.gradle/caches/modules-2/files-2.1/org.liquibase/liquibase-core/3.5.5/c65051f327382018bd09c30380f25eac96f210da/liquibase-core-3.5.5.jar!/liquibase/integration/spring/SpringLiquibase.class
It was loaded from the following location:
file:/C:/Users/Dev/.gradle/caches/modules-2/files-2.1/org.liquibase/liquibase-core/3.5.5/c65051f327382018bd09c30380f25eac96f210da/liquibase-core-3.5.5.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of liquibase.integration.spring.SpringLiquibase
看来问题出在spring-boot-starter-data-jpa,我一去掉依赖,应用运行就没问题了。这是我的完整依赖列表,但我还需要 JPA 来编写我的持久性 类。
dependencies {
compile('org.springframework.boot:spring-boot-starter-actuator')
compile 'org.springframework.boot:spring-boot-starter-web'
runtime('org.postgresql:postgresql:42.2.5')
compile 'org.webjars:bootstrap:4.1.3'
compile 'org.webjars:webjars-locator-core'
compile("org.springframework.boot:spring-boot-starter-data-jpa")
compile("org.hibernate:hibernate-entitymanager:4.3.4.Final")
compile("org.hibernate:hibernate-validator:6.0.16.Final")
compile ("org.hibernate:hibernate-core:5.4.1.Final")
testCompile 'org.springframework.boot:spring-boot-starter-test'
compile("org.liquibase:liquibase-core:3.5.5")
liquibaseRuntime 'org.liquibase:liquibase-gradle-plugin:2.0.1'
liquibaseRuntime 'org.liquibase:liquibase-groovy-dsl:2.0.2'
liquibaseRuntime "org.liquibase:liquibase-core:3.5.5"
liquibaseRuntime 'org.postgresql:postgresql:42.2.5'
}
知道为什么不匹配吗? 提前致谢
听起来两个不同的依赖项包含一个重复的 jar。
Gradle里面好像有管理依赖的插件,看一下here。
从您的配置中删除版本:
compile("org.liquibase:liquibase-core")
让 Spring 依赖管理为您处理。
在我的例子中,升级到同时使用 Spring Boot 2.1.0.RELEASE
和 org.liquibase:liquibase-core:3.6.3
完全解决了这个问题。
我在我的 maven 项目中通过删除 POM 中的 Liquibase 版本解决了这个问题
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
</dependency>
没有版本就这样吧,Spring 会处理剩下的事情。