Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 测试中的NoClassDefFoundError org/springframework/jdbc/core/ConnectionCallback_Java_Gradle_Dependencies_Noclassdeffounderror_Spring Jdbc - Fatal编程技术网

Java 测试中的NoClassDefFoundError org/springframework/jdbc/core/ConnectionCallback

Java 测试中的NoClassDefFoundError org/springframework/jdbc/core/ConnectionCallback,java,gradle,dependencies,noclassdeffounderror,spring-jdbc,Java,Gradle,Dependencies,Noclassdeffounderror,Spring Jdbc,我被卡住了,即使在我从Gradle依赖项中排除了任何与JDBC相关的内容之后,我也会遇到这个错误: Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/jdbc/core/ConnectionCallback at java.lang.Class.getDeclaredMethods0(Native Method) ... (skipped) Caused by: java.

我被卡住了,即使在我从Gradle依赖项中排除了任何与JDBC相关的内容之后,我也会遇到这个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/jdbc/core/ConnectionCallback
    at java.lang.Class.getDeclaredMethods0(Native Method)
    ... (skipped)
Caused by: java.lang.ClassNotFoundException: org.springframework.jdbc.core.ConnectionCallback
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    ... (skipped)
堆栈跟踪只包含Gradle、Java和JUnit的内部类。我不明白哪个类在运行时需要JDBC驱动程序

我运行
gradle integrationTest
,其中
integrationTest
是我的自定义gradle任务。我试图为这个问题创建一个最小的、可复制的示例。我创建了一个类似但较小的gradle项目,在那里我使用了这个任务和一些关键依赖项,它工作得很好(对不起,我无法重现这个错误,所以我不能与您共享一个小代码)。我认为这意味着我的自定义任务
integrationTest
工作得很好,问题出在主项目的可传递依赖关系中的某个地方

我尝试了
gradledependencies | grepjdbc
,并排除了一个名为jdbc的库。此后,问题依然存在

我试图向主项目的测试范围添加一个新的依赖项:

integrationTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc'
在这之后,问题就消失了。但我不喜欢这个解决方案,因为它看起来像是一个解决办法,我想找到这个问题的根本原因。主项目的测试模块不需要连接到关系数据库(仅Mongo)来完成其工作,因此在运行时不需要JDBC驱动程序。对吧?


请帮我调试一下。

我在将我的项目从MySQL迁移到MongoDB时也遇到了同样的错误。 我有一个测试类用

import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
//其他进口。。。
@DataJpaTest
@RunWith(SpringRunner.class)
类SomeIntegrationTestIT{
// ...
}
当我将注释(和导入)替换为

import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
//其他进口。。。
@DataMongoTest
@RunWith(SpringRunner.class)
类SomeIntegrationTestIT{
// ...
}
错误消失了