在使用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
网友评论