我有一个 Spring Boot 项目,我想删除 JPA。但是,执行此操作后,我在启动时看到以下内容
java.lang.ClassNotFoundException: org.springframework.boot.autoconfigure.flyway.FlywayMigrationScriptMissingFailureAnalyzer
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[na:na]
at java.base/java.lang.Class.forName0(Native Method) ~[na:na]
at java.base/java.lang.Class.forName(Class.java:534) ~[na:na]
at java.base/java.lang.Class.forName(Class.java:513) ~[na:na]
at org.springframework.util.ClassUtils.forName(ClassUtils.java:304) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.core.io.support.SpringFactoriesLoader.instantiateFactory(SpringFactoriesLoader.java:224) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.core.io.support.SpringFactoriesLoader.load(SpringFactoriesLoader.java:206) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.boot.diagnostics.FailureAnalyzers.loadFailureAnalyzers(FailureAnalyzers.java:69) ~[spring-boot-3.2.1.jar:3.2.1]
at org.springframework.boot.diagnostics.FailureAnalyzers.<init>(FailureAnalyzers.java:64) ~[spring-boot-3.2.1.jar:3.2.1]
at org.springframework.boot.diagnostics.FailureAnalyzers.<init>(FailureAnalyzers.java:58) ~[spring-boot-3.2.1.jar:3.2.1]
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) ~[na:na]
at org.springframework.core.io.support.SpringFactoriesLoader$FactoryInstantiator.instantiate(SpringFactoriesLoader.java:382) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.core.io.support.SpringFactoriesLoader.instantiateFactory(SpringFactoriesLoader.java:228) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.core.io.support.SpringFactoriesLoader.load(SpringFactoriesLoader.java:206) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.core.io.support.SpringFactoriesLoader.load(SpringFactoriesLoader.java:160) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:491) ~[spring-boot-3.2.1.jar:3.2.1]
at org.springframework.boot.SpringApplication.getExceptionReporters(SpringApplication.java:835) ~[spring-boot-3.2.1.jar:3.2.1]
at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:819) ~[spring-boot-3.2.1.jar:3.2.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:347) ~[spring-boot-3.2.1.jar:3.2.1]
at com.cbusha.be.BackendApplication.main(BackendApplication.java:24) ~[main/:na]
2024-03-24T11:52:15.124-04:00 TRACE 9108 --- [cbusha-be] [ main] o.s.boot.diagnostics.FailureAnalyzers : Unable to instantiate factory class [org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer] for factory type [org.springframework.boot.diagnostics.FailureAnalyzer]
java.lang.NoClassDefFoundError: org/springframework/jdbc/CannotGetJdbcConnectionException
at java.base/java.lang.Class.getDeclaredConstructors0(Native Method) ~[na:na]
at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3549) ~[na:na]
at java.base/java.lang.Class.getConstructors(Class.java:2227) ~[na:na]
at org.springframework.core.io.support.SpringFactoriesLoader$FactoryInstantiator.findConstructor(SpringFactoriesLoader.java:405) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.core.io.support.SpringFactoriesLoader$FactoryInstantiator.forClass(SpringFactoriesLoader.java:394) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.core.io.support.SpringFactoriesLoader.instantiateFactory(SpringFactoriesLoader.java:227) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.core.io.support.SpringFactoriesLoader.load(SpringFactoriesLoader.java:206) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.boot.diagnostics.FailureAnalyzers.loadFailureAnalyzers(FailureAnalyzers.java:69) ~[spring-boot-3.2.1.jar:3.2.1]
at org.springframework.boot.diagnostics.FailureAnalyzers.<init>(FailureAnalyzers.java:64) ~[spring-boot-3.2.1.jar:3.2.1]
at org.springframework.boot.diagnostics.FailureAnalyzers.<init>(FailureAnalyzers.java:58) ~[spring-boot-3.2.1.jar:3.2.1]
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) ~[na:na]
at org.springframework.core.io.support.SpringFactoriesLoader$FactoryInstantiator.instantiate(SpringFactoriesLoader.java:382) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.core.io.support.SpringFactoriesLoader.instantiateFactory(SpringFactoriesLoader.java:228) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.core.io.support.SpringFactoriesLoader.load(SpringFactoriesLoader.java:206) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.core.io.support.SpringFactoriesLoader.load(SpringFactoriesLoader.java:160) ~[spring-core-6.1.2.jar:6.1.2]
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:491) ~[spring-boot-3.2.1.jar:3.2.1]
at org.springframework.boot.SpringApplication.getExceptionReporters(SpringApplication.java:835) ~[spring-boot-3.2.1.jar:3.2.1]
at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:819) ~[spring-boot-3.2.1.jar:3.2.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:347) ~[spring-boot-3.2.1.jar:3.2.1]
at com.cbusha.be.BackendApplication.main(BackendApplication.java:24) ~[main/:na]
Caused by: java.lang.ClassNotFoundException: org.springframework.jdbc.CannotGetJdbcConnectionException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[na:na]
... 22 common frames omitted
我的 gradle 部门看起来像这样
dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation platform('software.amazon.awssdk:bom:2.+')
implementation 'software.amazon.awssdk:s3'
implementation 'software.amazon.awssdk:rds'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-data-rest'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-cassandra'
implementation 'org.springframework.boot:spring-boot-starter-webflux'
implementation 'org.springframework.boot:spring-boot-autoconfigure'
implementation 'org.springframework.kafka:spring-kafka'
implementation 'jakarta.validation:jakarta.validation-api:3.0.2'
implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.39'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
我尝试添加
// TODO Why do I need these
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.flywaydb:flyway-core'
implementation 'org.liquibase:liquibase-core'
以及我的 application.yml 中的以下内容
spring:
flyaway:
enabled: false
但我仍然遇到同样的错误。我缺少什么如何删除 JPA 并避免这些问题?我已确认没有类仍在使用 JPA 注释。
我还尝试删除
implementation 'org.springframework.boot:spring-boot-autoconfigure'
依赖项并重新运行,奇怪的是我遇到了同样的问题
我也在使用 Java 21 (OpenJDK)
另一件事可能值得注意的是我使用
apply plugin: 'io.spring.dependency-management'
删除 JPA 后,您根本没有任何类负责数据库连接。至少添加 JDBC 依赖。像这样:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
...