2016-07-18 14 views
5

Wenn ich versuche, meine TestNG Tests über ant ich java.lang.NoSuchMethodError: org.springframework.http.MediaType.getCharset()Ljava/nio/charset/Charset bin immer zu laufen (siehe unten für die vollständige Ausnahme)java.lang.NoSuchMethodError: org.springframework.http.MediaType.getCharset() Ljava/NiO/charset/Charset

Ich habe keine Probleme beim Kompilieren oder Ausführen meiner Webanwendung, kann aber keine Tests über ant ausführen. Ich bin mir ziemlich sicher, dass dies ein Problem beim Laden der Klasse ist, aber nicht sicher, welches Laden der Ordnungsklassen zur Laufzeit erfolgen soll. Ich verwende Spring 4.3.1 und Spring Security 4.1.1.

Gibt es eine bestimmte Reihenfolge, um meine Gläser so zu laden, dass die "korrekte" Version von org.springframework.http.MediaType verwendet wird?

[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. 
+0

Es klingt wie eine Java Version Mismatch – paulsm4

+0

@ paulsm4 - meine '$ {ant.java.version}' und '$ {java.version}' erscheinen als '1.7' und' 1.7.0_80'. Mein '$ JAVA_HOME' wird als'/usr/lib/jvm/java-7-oracle' angezeigt - an welchen anderen Stellen muss ich nach Java-Versionen suchen? –

+0

Haben Sie versucht, sauber und bauen Sie Ihr Projekt? –

Antwort

5

Unglaublich ... durch Klassenladeprobleme noch einmal vereitelt ... ein Überglas mit dem Namen activemq-minimal-5.13.3.jar hatte Verweise auf spring Gläser darin, die den Konflikt verursacht haben. activemq-minimal-5.13.3.jar kommt vor spring alphabetisch, so dass die Klassen in diesem activemq Glas über die spring Gläser geladen/verwendet wurden. Mein Ameisen Build wurde aktualisiert, um zuerst die spring Klassen zu laden und jetzt bin ich fertig.

Die Art und Weise, wie ich herausgefunden habe, ist, dass ich alle meine 3rd-Party-Bibliotheken in einem "Test" -Projekt zusammenfügte und löschte Gläser (mit einer gewissen Neigung, wo das Problem war), bis ich in der Lage war festzustellen, wo die Klasse Ladeproblem war.

+0

Danke für das Update! Bitte "akzeptiere" deine Lösung. – paulsm4

1

org.springframework.http.MediaType.getCharset() wurde seit 4.3 eingeführt, wenn Java nicht das gefunden, bedeutet, dass Sie eine Feder-Core-Version unter 4.3.1 in Ihrem Classpath haben, die geladen und gewöhnen.
Können Sie den Inhalt Ihres lib-Verzeichnisses teilen?