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

2019-11-16  本文已影响0人  sizuoyi00

在使用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
上一篇下一篇

猜你喜欢

热点阅读