【问题标题】:java.lang.NoSuchMethodError: 'void org.springframework.util.Assert.state(boolean, java.util.function.Supplier)'java.lang.NoSuchMethodError: 'void org.springframework.util.Assert.state(boolean, java.util.function.Supplier)'
【发布时间】:2020-01-31 12:51:12
【问题描述】:

我尝试将项目从 JDK8 升级到 JDK11,整个业务逻辑运行良好,但是当 maven 到达测试类时,所有这些都失败并出现完全相同的异常 例如

 initializationError(com.foo.bar.etc.utils.TimeUtilsTest)  Time elapsed: 0 sec  <<< ERROR!
java.lang.NoSuchMethodError: 'void org.springframework.util.Assert.state(boolean, java.util.function.Supplier)'
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.ensureSpringRulesAreNotPresent(SpringJUnit4ClassRunner.java:120)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:141)
        at org.springframework.test.context.junit4.SpringRunner.<init>(SpringRunner.java:49)
        at jdk.internal.reflect.GeneratedConstructorAccessor6.newInstance(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
        at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
        at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
        at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
        at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128)
        at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

一旦一切完成,它只是用列表总结所有测试类

Tests in error:
  BaseSpringTest.initializationError » NoSuchMethod 'void org.springframework.ut...
  EmailAttachmentDaoImplTest.initializationError » NoSuchMethod 'void org.spring...
  EmailEventDaoImplTest.initializationError » NoSuchMethod 'void org.springframe...
  EmailMappingDaoImplTest.initializationError » NoSuchMethod 'void org.springfra...
  EmailRequestDaoImplTest.initializationError » NoSuchMethod 'void org.springfra...
  EmailWindowsDaoImplTest.initializationError » NoSuchMethod 'void org.springfra...
  ServiceClientDaoImplTest.initializationError » NoSuchMethod 'void org.springfr...
  TemplateContextDaoImplTest.initializationError » NoSuchMethod 'void org.spring...
  TemplateMappingDaoImplTest.initializationError » NoSuchMethod 'void org.spring...
  TemplateMetadataDaoImplTest.initializationError » NoSuchMethod 'void org.sprin...
  VarMetadataDaoImplTest.initializationError » NoSuchMethod 'void org.springfram...
  TemplateContextStorageTest.initializationError » NoSuchMethod 'void org.spring...
  ApiRequestFilterTest.initializationError » NoSuchMethod 'void org.springframew...
  TemplateResolutionServiceTest.initializationError » NoSuchMethod 'void org.spr...
  AwsS3ClientTest.initializationError » NoSuchMethod 'void org.springframework.u...
  TimeUtilsTest.initializationError » NoSuchMethod 'void org.springframework.uti...

可能是某些版本的问题吗?我知道它需要添加一些 jar,或者将 JDK 之外的其他东西升级到版本 11

顺便说一句,在 JDK8 上测试运行良好,我想这是一个重要的细节。

【问题讨论】:

    标签: java spring maven unit-testing junit


    【解决方案1】:

    将 spring-core 从版本 4 移至版本 5 后问题已解决。 不知什么原因,除了 spring-core 之外,所有的 spring jar 都是第 5 版,更奇怪的是它是一个 spring boot 应用程序,所以整个 spring jar 包都是第 5 版,除了 spring-core。

    【讨论】:

    • 这表明你在你的 pom 中做奇怪的事情。
    • 某些东西迫使它到版本 4,而不是常规管理。因此,您的依赖项列表中必须有一个依赖项可以做到这一点。但是,如果没有看到您的实际 pom 很难说出哪个依赖项。
    猜你喜欢
    • 2022-11-15
    • 2021-08-22
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 2022-09-27
    相关资源
    最近更新 更多