2016-07-18 232 views
5

Quando si tenta di eseguire i miei test TestNG via ant sto ottenendo java.lang.NoSuchMethodError: org.springframework.http.MediaType.getCharset()Ljava/nio/charset/Charset (vedi sotto per la piena eccezione)java.lang.NoSuchMethodError: org.springframework.http.MediaType.getCharset() Ljava/nio/charset/Charset

Non ho problemi a compilare o eseguire la mia applicazione web ma non posso eseguire test tramite ant. Sono abbastanza sicuro che si tratta di un problema di caricamento di classe, ma non sono sicuro di quale caricamento della classe ordine debba essere eseguito in fase di runtime. Sto usando Spring 4.3.1 e Spring Security 4.1.1.

Esiste un ordine particolare per caricare i vasi in modo da utilizzare la versione "corretta" di 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. 
+0

Sembra una mancata corrispondenza della versione Java – paulsm4

+0

@ paulsm4 - il mio '$ {ant.java.version}' e '$ {java.version}' si presentano come '1.7' e' 1.7.0_80'. Il mio '$ JAVA_HOME' si presenta come'/usr/lib/jvm/java-7-oracle' - quali altri posti devo controllare per le versioni di Java? –

+0

Hai provato a pulire e costruire il tuo progetto? –

risposta

5

Incredibile ... sventato da problemi di caricamento di classe ancora una volta ... un jar uber di nome activemq-minimal-5.13.3.jar aveva riferimenti a spring vasi che causavano il conflitto. activemq-minimal-5.13.3.jar arriva prima dello spring in ordine alfabetico, quindi le classi in tale jar activemq venivano caricate/utilizzate sui jar spring. Aggiornato il mio formica per caricare prima le classi spring e ora sono tutto pronto.

Ho scoperto tutte le librerie di terze parti in un progetto "Test" e ho aggiunto/cancellato giare (con un po 'di inclinazione dov'era il problema) fino a quando non sono riuscito a individuare la classe problema di caricamento era.

+0

Grazie per l'aggiornamento! Si prega di "accettare" la soluzione. – paulsm4

1

org.springframework.http.MediaType.getCharset() è stato introdotto dal 4.3 Se Java non ha ritenuto che significa che si dispone di una versione primavera-core sotto 4.3.1 nel classpath che vengono caricati e utilizzati.
Puoi condividere il contenuto della tua cartella lib?

Problemi correlati