美文网首页
jar包冲突问题-java.lang.NoSuchMethodE

jar包冲突问题-java.lang.NoSuchMethodE

作者: sizuoyi00 | 来源:发表于2019-11-16 21:01 被阅读0次

    在使用acts过程中,遭遇jar包冲突,导致一直启动直接报错。
    报错如下:主要报错原因java.lang.NoSuchMethodError

    org.testng.TestNGException: 
    Cannot instantiate class com.jf.acts.test.api.PriceInitActsTest
      at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:38)
      at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:374)
      at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:286)
      at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:110)
      at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:195)
      at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:120)
      at org.testng.TestRunner.initMethods(TestRunner.java:405)
      at org.testng.TestRunner.init(TestRunner.java:231)
      at org.testng.TestRunner.init(TestRunner.java:201)
      at org.testng.TestRunner.<init>(TestRunner.java:150)
      at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:523)
      at org.testng.SuiteRunner.init(SuiteRunner.java:157)
      at org.testng.SuiteRunner.<init>(SuiteRunner.java:111)
      at org.testng.TestNG.createSuiteRunner(TestNG.java:1245)
      at org.testng.TestNG.createSuiteRunners(TestNG.java:1232)
      at org.testng.TestNG.runSuitesLocally(TestNG.java:1086)
      at org.testng.TestNG.run(TestNG.java:1007)
      at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:73)
      at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)
    Caused by: java.lang.reflect.InvocationTargetException
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
      at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:29)
      ... 18 more
    Caused by: java.lang.IllegalStateException: Could not load CacheAwareContextLoaderDelegate [class org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate]
      at org.springframework.test.context.BootstrapUtils.createCacheAwareContextLoaderDelegate(BootstrapUtils.java:102)
      at org.springframework.test.context.BootstrapUtils.createBootstrapContext(BootstrapUtils.java:71)
      at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:124)
      at org.springframework.test.context.testng.AbstractTestNGSpringContextTests.<init>(AbstractTestNGSpringContextTests.java:112)
      at com.jf.acts.test.api.PriceInitActsTest.<init>(PriceInitActsTest.java:19)
      ... 23 more
    Caused by: java.lang.NoSuchMethodError: org.springframework.beans.BeanUtils.instantiateClass(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;
      at org.springframework.test.context.BootstrapUtils.createCacheAwareContextLoaderDelegate(BootstrapUtils.java:99)
      ... 30 more
    

    摒弃干扰错误信息,观察真正报错日志如下:

    Caused by: java.lang.NoSuchMethodError: org.springframework.beans.BeanUtils.instantiateClass(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;
      at org.springframework.test.context.BootstrapUtils.createCacheAwareContextLoaderDelegate(BootstrapUtils.java:99)
      ... 30 more
    

    理论如果org.springframework.beans包依赖正常,不应该出现该问题,看报错形式类似jar包冲突。
    使用mvn helper插件查看mvn依赖关系

    将该包exclude后重新执行下
    结果虽然报错,但是报错信息与上方不一致,但致错原因大体一致,日志如下:

    org.testng.TestNGException: 
    Cannot instantiate class com.jf.acts.test.api.PriceInitActsTest
        at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:38)
        at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:374)
        at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:286)
        at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:110)
        at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:195)
        at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:120)
        at org.testng.TestRunner.initMethods(TestRunner.java:405)
        at org.testng.TestRunner.init(TestRunner.java:231)
        at org.testng.TestRunner.init(TestRunner.java:201)
        at org.testng.TestRunner.<init>(TestRunner.java:150)
        at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:523)
        at org.testng.SuiteRunner.init(SuiteRunner.java:157)
        at org.testng.SuiteRunner.<init>(SuiteRunner.java:111)
        at org.testng.TestNG.createSuiteRunner(TestNG.java:1245)
        at org.testng.TestNG.createSuiteRunners(TestNG.java:1232)
        at org.testng.TestNG.runSuitesLocally(TestNG.java:1086)
        at org.testng.TestNG.run(TestNG.java:1007)
        at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:73)
        at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)
    Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:29)
        ... 18 more
    Caused by: java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]. Specify @BootstrapWith's 'value' attribute or make the default bootstrapper class available.
        at org.springframework.test.context.BootstrapUtils.resolveTestContextBootstrapper(BootstrapUtils.java:144)
        at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:124)
        at org.springframework.test.context.testng.AbstractTestNGSpringContextTests.<init>(AbstractTestNGSpringContextTests.java:112)
        at com.jf.acts.test.api.PriceInitActsTest.<init>(PriceInitActsTest.java:16)
        at com.jf.acts.test.api.PriceInitActsTest.<init>(PriceInitActsTest.java:16)
        ... 23 more
    Caused by: java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.rethrowAnnotationConfigurationException(Ljava/lang/Throwable;)V
        at org.springframework.core.annotation.AnnotatedElementUtils.searchWithFindSemantics(AnnotatedElementUtils.java:1075)
        at org.springframework.core.annotation.AnnotatedElementUtils.searchWithFindSemantics(AnnotatedElementUtils.java:1041)
        at org.springframework.core.annotation.AnnotatedElementUtils.findAllMergedAnnotations(AnnotatedElementUtils.java:736)
        at org.springframework.test.context.BootstrapUtils.resolveExplicitTestContextBootstrapper(BootstrapUtils.java:152)
        at org.springframework.test.context.BootstrapUtils.resolveTestContextBootstrapper(BootstrapUtils.java:127)
        ... 29 more
    

    同样摒弃无用报错日志,真正报错日志如下,

    Caused by: java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.rethrowAnnotationConfigurationException(Ljava/lang/Throwable;)V
      at org.springframework.core.annotation.AnnotatedElementUtils.searchWithFindSemantics(AnnotatedElementUtils.java:1075)
      at org.springframework.core.annotation.AnnotatedElementUtils.searchWithFindSemantics(AnnotatedElementUtils.java:1041)
      at org.springframework.core.annotation.AnnotatedElementUtils.findAllMergedAnnotations(AnnotatedElementUtils.java:736)
      at org.springframework.test.context.BootstrapUtils.resolveExplicitTestContextBootstrapper(BootstrapUtils.java:152)
      at org.springframework.test.context.BootstrapUtils.resolveTestContextBootstrapper(BootstrapUtils.java:127)
      ... 29 more
    

    与上方同样处理逻辑,将org.springframework.core包exclude

    将以上两个jar包exclude后,项目正常运行。
    结论:
    形如这样的报错,考虑往jar包冲突方向考虑。

    
    Caused by: java.lang.NoSuchMethodError: org.springframework.beans.BeanUtils.instantiateClass(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;
    
    Caused by: java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.rethrowAnnotationConfigurationException(Ljava/lang/Throwable;)V
    

    相关文章

      网友评论

          本文标题:jar包冲突问题-java.lang.NoSuchMethodE

          本文链接:https://www.haomeiwen.com/subject/kihuictx.html