java.lang.NoClassDefFoundError: org/junit/platform/commons/util/ClassNamePatternFilterUtils 尝试使用 gra

Posted

技术标签:

【中文标题】java.lang.NoClassDefFoundError: org/junit/platform/commons/util/ClassNamePatternFilterUtils 尝试使用 gradle 运行 mockito junit5 测试【英文标题】:java.lang.NoClassDefFoundError: org/junit/platform/commons/util/ClassNamePatternFilterUtils when trying run mockito junit5 test with gradle 【发布时间】:2021-10-16 10:03:12 【问题描述】:

我收到以下错误

java.lang.NoClassDefFoundError: org/junit/platform/commons/util/ClassNamePatternFilterUtils 在 org.junit.platform.launcher.core.LauncherFactory.loadAndFilterTestExecutionListeners(LauncherFactory.java:122) 在 org.junit.platform.launcher.core.LauncherFactory.create(LauncherFactory.java:108) 在 org.junit.platform.launcher.core.LauncherFactory.create(LauncherFactory.java:75) 在 org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.(JUnit5TestLoader.java:34) 在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64) 在 java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) 在 java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) 在 java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:350) 在 java.base/java.lang.Class.newInstance(Class.java:645) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:371) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:366) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:310) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:225) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209) 引起:java.lang.ClassNotFoundException:org.junit.platform.commons.util.ClassNamePatternFilterUtils 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 16 更多

这是我的 gradle 文件

dependencies 
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' 
    implementation 'org.springframework.boot:spring-boot-starter-data-mongodb-reactive' 
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-webflux' 
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    developmentOnly 'org.springframework.boot:spring-boot-devtools' 
    implementation 'org.springframework.boot:spring-boot-starter-json'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
    annotationProcessor 'org.projectlombok:lombok' 
    runtime 'org.springframework.boot:spring-boot-starter-tomcat'
    testImplementation('org.springframework.boot:spring-boot-starter-test') 
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    
    testCompile('org.apache.commons:commons-compress:1.19')
    testImplementation 'io.projectreactor:reactor-test'
    compile group: 'org.apache.commons', name: 'commons-collections4', version: '4.4'
    compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.8.1'
    compile group: 'commons-codec', name: 'commons-codec', version: '1.14'
    compile group: 'org.json', name: 'json', version: '20180813'  
    compile group: 'com.opencsv', name: 'opencsv', version: '5.1' 
    // https://mvnrepository.com/artifact/com.google.guava/guava
    compile group: 'com.google.guava', name: 'guava', version: '28.1-jre'
    // https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk
     compile group: 'com.amazonaws', name: 'aws-java-sdk', version: '1.11.852'

    compile("io.springfox:springfox-swagger2:2.9.2")
     exclude group:"com.google.guava", module:"guava"
    
    compile("io.springfox:springfox-swagger-ui:2.9.2")
     exclude group:"com.google.guava", module:"guava"
    

    runtime  group: 'org.springframework.cloud', name: 'spring-cloud-dependencies', version: 'Hoxton.SR6', ext: 'pom'
    compile group: 'io.spring.gradle', name: 'dependency-management-plugin', version: '1.0.9.RELEASE'
    implementation ('org.reflections:reflections:0.9.10') 
        exclude group: 'com.google.code.findbugs', module: 'annotations'
    
    implementation 'commons-io:commons-io:2.5'
    implementation("org.springframework.cloud:spring-cloud-starter-openfeign:2.2.0.RELEASE")
     exclude group:"ch.qos.logback", module:"logback-classic"
    
    implementation 'io.github.openfeign:feign-jackson:11.0'
    implementation 'io.github.openfeign:feign-httpclient:11.0'
    compile group: 'io.github.openfeign.form', name: 'feign-form-spring', version: '3.5.0'
    compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.0'
    implementation 'org.alfresco:alfresco-data-model:6.19@jar'
    implementation 'xerces:xercesImpl:2.9.1@jar'


test 
    useJUnitPlatform()

【问题讨论】:

你能提供一些关于你想测试的类和你得到的测试/配置的信息吗? 【参考方案1】:

我发现 build.gradle 文件中缺少以下几行

testRuntimeOnly 'org.junit.platform:junit-platform-commons:1.7.1'

添加后它完全正常。

【讨论】:

这不是必须的。我的猜测是您以某种方式引用了不兼容的 JUnit 版本。如果您想知道,请出示您的完整 build.gradle 文件。 在问题中添加了我的 gradle 文件。请参考 我很确定自 ClassNamePatternFilterUtils 与 junit-platform 5.7 一起出现以来,在您的依赖项中某处隐藏了版本不兼容性。也许您使用的是 这个答案也对我有用。 (johanneslink,我使用的是

以上是关于java.lang.NoClassDefFoundError: org/junit/platform/commons/util/ClassNamePatternFilterUtils 尝试使用 gra的主要内容,如果未能解决你的问题,请参考以下文章