java.lang.NoSuchMethodError:org.springframework.http.MediaType.getCharset()Ljava/nio/charset/charset

java.lang.NoSuchMethodError:org.springframework.http.MediaType.getCharset()Ljava/nio/charset/charset,java,spring,ant,nosuchmethoderror,Java,Spring,Ant,Nosuchmethoderror,当我试图通过ant运行TestNG测试时,我得到了java.lang.NoSuchMethodError:org.springframework.http.MediaType.getCharset()Ljava/nio/charset/charset(请参见下面的完整异常) 我在编译或运行web应用程序方面没有问题,但无法通过ant运行测试。我相当确定这是一个类加载问题,但不确定在运行时类加载的顺序。我使用的是Spring 4.3.1和Spring Security 4.1.1 是否有特定的顺序

当我试图通过
ant
运行
TestNG
测试时,我得到了
java.lang.NoSuchMethodError:org.springframework.http.MediaType.getCharset()Ljava/nio/charset/charset
(请参见下面的完整异常)

我在编译或运行web应用程序方面没有问题,但无法通过ant运行测试。我相当确定这是一个类加载问题,但不确定在运行时类加载的顺序。我使用的是Spring 4.3.1和Spring Security 4.1.1

是否有特定的顺序来加载我的JAR,以便使用“正确”版本的
org.springframework.http.MediaType

[testng] org.testng.TestNGException: 
   [testng] An error occurred while instantiating class com.avada.rest.api.GroupsIntTest: org.springframework.http.MediaType.getCharset()Ljava/nio/charset/Charset;
   [testng]     at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:388)
   [testng]     at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:290)
   [testng]     at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:125)
   [testng]     at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:191)
   [testng]     at org.testng.TestClass.getInstances(TestClass.java:104)
   [testng]     at org.testng.TestClass.initTestClassesAndInstances(TestClass.java:90)
   [testng]     at org.testng.TestClass.init(TestClass.java:82)
   [testng]     at org.testng.TestClass.<init>(TestClass.java:45)
   [testng]     at org.testng.TestRunner.initMethods(TestRunner.java:409)
   [testng]     at org.testng.TestRunner.init(TestRunner.java:247)
   [testng]     at org.testng.TestRunner.init(TestRunner.java:217)
   [testng]     at org.testng.TestRunner.<init>(TestRunner.java:161)
   [testng]     at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:555)
   [testng]     at org.testng.SuiteRunner.init(SuiteRunner.java:168)
   [testng]     at org.testng.SuiteRunner.<init>(SuiteRunner.java:117)
   [testng]     at org.testng.TestNG.createSuiteRunner(TestNG.java:1359)
   [testng]     at org.testng.TestNG.createSuiteRunners(TestNG.java:1346)
   [testng]     at org.testng.TestNG.runSuitesLocally(TestNG.java:1200)
   [testng]     at org.testng.TestNG.runSuites(TestNG.java:1124)
   [testng]     at org.testng.TestNG.run(TestNG.java:1096)
   [testng]     at org.testng.TestNG.privateMain(TestNG.java:1425)
   [testng]     at org.testng.TestNG.main(TestNG.java:1394)
   [testng] Caused by: java.lang.NoSuchMethodError: org.springframework.http.MediaType.getCharset()Ljava/nio/charset/Charset;
   [testng]     at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.getSupportedMediaTypes(RestTemplate.java:757)
   [testng]     at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java:733)
   [testng]     at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:617)
   [testng]     at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:580)
   [testng]     at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:287)
   [testng]     at com.avada.rest.api.ApiTestClient.getAll(ApiTestClient.java:81)
   [testng]     at com.avada.rest.api.GroupsIntTest.<clinit>(GroupsIntTest.java:17)
   [testng]     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   [testng]     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
   [testng]     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
   [testng]     at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
   [testng]     at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:29)
   [testng]     at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:377)
   [testng]     ... 21 more
   [testng] The tests failed.
[testng]org.testng.TestNGException:
[testng]实例化类com.avada.rest.api.groupsInTest时出错:org.springframework.http.MediaType.getCharset()Ljava/nio/charset/charset;
[testng]位于org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:388)
[testng]位于org.testng.internal.ClassHelper.createInstance(ClassHelper.java:290)
[testng]位于org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:125)
[testng]位于org.testng.internal.ClassImpl.getInstances(ClassImpl.java:191)
[testng]位于org.testng.TestClass.getInstances(TestClass.java:104)
[testng]位于org.testng.TestClass.initTestClassesAndInstances(TestClass.java:90)
[testng]位于org.testng.TestClass.init(TestClass.java:82)
[testng]位于org.testng.TestClass.(TestClass.java:45)
[testng]位于org.testng.TestRunner.initMethods(TestRunner.java:409)
[testng]位于org.testng.TestRunner.init(TestRunner.java:247)
[testng]位于org.testng.TestRunner.init(TestRunner.java:217)
[testng]位于org.testng.TestRunner.(TestRunner.java:161)
[testng]位于org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:555)
[testng]位于org.testng.SuiteRunner.init(SuiteRunner.java:168)
[testng]位于org.testng.SuiteRunner(SuiteRunner.java:117)
[testng]位于org.testng.testng.createSuiteRunner(testng.java:1359)
[testng]位于org.testng.testng.createSuiteRunners(testng.java:1346)
[testng]位于org.testng.testng.runsuitesLocal(testng.java:1200)
[testng]位于org.testng.testng.runSuites(testng.java:1124)
[testng]位于org.testng.testng.run(testng.java:1096)
[testng]位于org.testng.testng.privateMain(testng.java:1425)
[testng]位于org.testng.testng.main(testng.java:1394)
[testng]原因:java.lang.NoSuchMethodError:org.springframework.http.MediaType.getCharset()Ljava/nio/charset/charset;
[testng]位于org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.getSupportedMediaTypes(RestTemplate.java:757)
[testng]位于org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java:733)
[testng]位于org.springframework.web.client.restemplate.doExecute(restemplate.java:617)
[testng]位于org.springframework.web.client.restemplate.execute(restemplate.java:580)
[testng]位于org.springframework.web.client.restemplate.getForObject(restemplate.java:287)
[testng]位于com.avada.rest.api.apitesclient.getAll(apitesclient.java:81)
[testng]位于com.avada.rest.api.groupsintest.(groupsintest.java:17)
[testng]位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
[testng]位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
[testng]位于sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[testng]位于java.lang.reflect.Constructor.newInstance(Constructor.java:526)
[testng]位于org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:29)
[testng]位于org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:377)
[testng]。。。还有21个
[testng]测试失败。

org.springframework.http.MediaType.getCharset()是从4.3开始引入的,如果java没有发现它,这意味着你的类路径中有一个低于4.3.1的spring核心版本,可以加载和使用。

难以置信……再次被类加载问题所挫败……一个名为
activemq-minimal-5.13.3.jar
的uber jar中引用了
spring
jar,这是一个很好的例子引发冲突
activemq-minimal-5.13.3.jar
按字母顺序排在
spring
之前,因此
activemq
jar中的类是通过
spring
jar加载/使用的。首先更新我的ant构建以加载
spring
类,现在我已经准备好了


我发现的方法是,我将我所有的第三方LIB放在一个“测试”项目中,并添加/删除JAR(在某种程度上倾向于问题所在),直到我能够确定类加载问题所在。

在spring的最新版本中,他们进行了修改

org.springframework.http

旧版:

      contentType.getCharSet()
     contentType.getCharset()
新建:

      contentType.getCharSet()
     contentType.getCharset()

听起来像是Java版本mismatch@paulsm4-my
${ant.java.version}
${java.version}
显示为
1.7
1.7.0\u 80
。我的
$JAVA_HOME
显示为
/usr/lib/jvm/JAVA-7-oracle
-我还需要在哪些地方检查JAVA版本?你是否尝试过清理和构建项目?@NikuHysa-是的…每次我运行测试时,我都会清理和创建项目build@ZackMacomber谢谢你的回复。在SpringWeb5.0.8中,getCharSet()已更改为getCharSet()。这就是为什么我会出现这个错误。谢谢你的更新!请“接受”你的解决方案。“难以置信……再次被类加载问题挫败……”->uff,不仅仅是我一次又一次地与Spring的类加载问题斗争,所以这不是那么明显的事情;)我也遇到了这个错误。修理我的项目