首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >org.springframework.http.MediaType.getCharset()Ljava/nio/charset/Charset :java.lang.NoSuchMethodError

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

Stack Overflow用户
提问于 2016-07-19 01:27:41
回答 3查看 15.4K关注 0票数 11

当我尝试通过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。

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

代码语言:javascript
复制
[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.
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-19 04:49:48

Unbelievable...foiled by class loading问题一旦名为activemq-minimal-5.13.3.jar的again...an uber jar中包含了对spring jar的引用,就会导致冲突。按照字母顺序,activemq-minimal-5.13.3.jarspring之前,因此activemq jar中的类是通过spring jar加载/使用的。更新了我的ant构建,以便首先加载spring类,现在我已经准备好了。

我发现的方法是,我将我所有的第三方库放在一个“测试”项目中,并添加/删除jars (有点倾向于问题所在),直到我能够准确地指出类加载问题的位置。

票数 7
EN

Stack Overflow用户

发布于 2016-07-19 04:34:58

org.springframework.http.MediaType.getCharset()是从4.3开始引入的,如果java没有找到它,这意味着你的类路径中有一个低于4.3.1的spring-core版本,它会被加载和使用。

票数 3
EN

Stack Overflow用户

发布于 2019-05-22 01:27:24

在春季的最新版本中,他们已经修改了

org.springframework.http;

代码语言:javascript
复制
MediaType contentType = headers.getContentType();

旧版 :

代码语言:javascript
复制
      contentType.getCharSet()

新特性:

代码语言:javascript
复制
     contentType.getCharset()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38442676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档