2016-07-18 14 views
5
私は java.lang.NoSuchMethodError: org.springframework.http.MediaType.getCharset()Ljava/nio/charset/Charsetを取得しています antを経由して、私の TestNGテストを実行しようと

java.lang.NoSuchMethodErrorの:org.springframework.http.MediaType.getCharset()Ljava/NIO /文字セット/文字セット

(フル例外については下記を参照)

Webアプリケーションのコンパイルや実行に問題はありませんが、ant経由でテストを実行することはできません。私はこれがクラスロードの問題だと確信していますが、実行時にどのクラスのロードを行うべきかは不明です。私はSpring 4.3.1とSpring Security 4.1.1を使用しています。

「正しい」バージョンorg.springframework.http.MediaTypeが使用されるように、ジャーをロードする特定の順序はありますか? Javaはあなたがロードされ、慣れるあなたのクラスパスに4.3.1以下のスプリングコアバージョンを持っていることを意味し、それが見つからなかった

[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

Javaバージョンの不一致のようです。 – paulsm4

+0

@ paulsm4 - 私の '$ {ant.java.version}'と '$ {java.version}'は '1.7'と' 1.7.0_80'と表示されます。私の '$ JAVA_HOME'は'/usr/lib/jvm/java-7-oracle'として表示されます.Javaのバージョンを調べるには他にどのような場所が必要ですか? –

+0

あなたはきれいなプロジェクトを構築しようとしましたか? –

答えて

5

信じられないほど...クラス読み込みの問題でもう一度言われました... activemq-minimal-5.13.3.jarという名前のuber jarファイルには、矛盾の原因となっていたjarファイルがspringにありました。 activemq-minimal-5.13.3.jarspringの前にアルファベット順にあるので、そのactivemq jarのクラスはジャーにロード/使用されていました。 springクラスをロードするために私のantビルドを更新しました。今はすべて設定されています。

私が見つけたのは、自分のサードパーティ製のライブラリをすべて「テスト」プロジェクトにまとめて、どこにクラスがあるのか​​を突き止めるまでジャンパーを追加/削除しました。読み込みの問題がありました。

+0

更新いただきありがとうございます!あなたのソリューションを "受け入れてください"。 – paulsm4

1

org.springframework.http.MediaType.getCharset()は4.3以降に導入されました。
libディレクトリのコンテンツを共有できますか?