簡體   English   中英

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

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

當我嘗試通過ant運行我的TestNG測試時,我得到java.lang.NoSuchMethodError: org.springframework.http.MediaType.getCharset()Ljava/nio/charset/Charset (完整異常見下文)

我在編譯或運行我的 web 應用程序時沒有問題,但無法通過 ant 運行測試。我相當確定這是一個 class 加載問題,但不確定在運行時應該按什么順序加載 class。 我正在使用 Spring 4.3.1 和 Spring Security 4.1.1。

是否有特定的順序來加載我的 jars,以便使用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.

令人難以置信......再次被類加載問題挫敗......一個名為activemq-minimal-5.13.3.jar的超級罐子引用了導致沖突的spring罐。 activemq-minimal-5.13.3.jar按字母順序activemq-minimal-5.13.3.jarspring之前,因此activemq jar中的類正在spring jar上加載/使用。 更新了我的ant build以首先加載spring類,現在我已經完成了設置。

我發現的方法是將所有我的第三方庫放在一個“測試”項目中並添加/刪除罐子(有一點傾向於問題所在),直到我能夠確定類加載問題的位置。

org.springframework.http.MediaType.getCharset()自4.3以來被引入,如果java沒有找到它意味着你的類路徑中有一個低於4.3.1的spring-core版本,它被加載和使用。

在春季最新版本,他們已經修改

org.springframework.http;

MediaType contentType = headers.getContentType();

老:

      contentType.getCharSet()

新:

     contentType.getCharset()

就我而言,罪魁禍首是 spring-web-4.2.2.RELEASE,將其升級到 >4.2 為我修復了它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 Java 8 + Netbeans 16 throws java.lang.NoSuchMethodError: java.net.URLEncoder.encode(Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/lang/String; 線程“ main”中的異常java.lang.NoSuchMethodError:com.google.common.io.Files.newReaderSupplier(Ljava / io / File; Ljava / nio / charset / Charset;) java.lang.NoSuchMethodError:org.springframework.core.GenericTypeResolver.resolveTypeArguments(Ljava / lang / Class; Ljava / lang / Class;) java.lang.NoSuchMethodError: org.apache.commons.compress.utils.IOUtils.readFully(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/ByteBuffer;) java.lang.NoSuchMethodError: org.springframework.util.StringUtils.matchesCharacter(Ljava/lang/String;C)Z java.lang.NoSuchMethodError:org.springframework.web.context.ConfigurableWebApplicationContext.getId()Ljava / lang / String; java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.isInJavaLangAnnotationPackage(Ljava/lang/annotation/Annotation;)Z 造成原因:java.lang.NoSuchMethodError:org.springframework.beans.MutablePropertyValues.get(Ljava / lang / String;)Ljava / lang / Object java.lang.NoSuchMethodError:org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.addAnnotatedClass(Ljava / lang / Class;) 引起:java.lang.NoSuchMethodError: org.springframework.web.bind.annotation.RequestMapping.path()[Ljava/lang/String;
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM