저지 REST 애플리케이션 용 테스트 케이스를 만들려고합니다. 저지 MultiPartFeature를 등록 할 수 없습니다.
나는pom.xml
에 이미 추가 :
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.25</version>
</dependency>
나는 내 클라이언트를 만드는거야 :
Client client = ClientBuilder.newBuilder()
.register(MoxyJsonFeature.class)
.register(MultiPartFeature.class)
.build();
하지만이 라인 .register(MultiPartFeature.class)
상의 InstantiationException
와 함께 실패합니다. 다음은 전체 스택 추적입니다.
java.lang.RuntimeException: java.lang.InstantiationException: org.glassfish.jersey.media.multipart.internal.MultiPartReaderClientSide
at __randomizedtesting.SeedInfo.seed([8269888A1B7E6430]:0)
at org.apache.cxf.jaxrs.impl.ConfigurationImpl.createProvider(ConfigurationImpl.java:199)
at org.apache.cxf.jaxrs.impl.ConfigurableImpl.register(ConfigurableImpl.java:102)
at org.apache.cxf.jaxrs.impl.ConfigurableImpl.register(ConfigurableImpl.java:97)
at org.apache.cxf.jaxrs.impl.ConfigurableImpl$FeatureContextImpl.register(ConfigurableImpl.java:139)
at org.apache.cxf.jaxrs.impl.ConfigurableImpl$FeatureContextImpl.register(ConfigurableImpl.java:120)
at org.glassfish.jersey.media.multipart.MultiPartFeature.configure(MultiPartFeature.java:67)
at org.apache.cxf.jaxrs.impl.ConfigurableImpl.register(ConfigurableImpl.java:86)
at org.apache.cxf.jaxrs.impl.ConfigurableImpl.doRegister(ConfigurableImpl.java:117)
at org.apache.cxf.jaxrs.impl.ConfigurableImpl.register(ConfigurableImpl.java:102)
at org.apache.cxf.jaxrs.impl.ConfigurableImpl.register(ConfigurableImpl.java:97)
at org.apache.cxf.jaxrs.client.spec.ClientBuilderImpl.register(ClientBuilderImpl.java:56)
at org.apache.cxf.jaxrs.client.spec.ClientBuilderImpl.register(ClientBuilderImpl.java:35)
at fr.pilato.elasticsearch.crawler.fs.test.integration.AbstractRestITCase.startRestClient(AbstractRestITCase.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1764)
at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:811)
at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:827)
at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:367)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.InstantiationException: org.glassfish.jersey.media.multipart.internal.MultiPartReaderClientSide
at java.lang.Class.newInstance(Class.java:427)
at org.apache.cxf.jaxrs.impl.ConfigurationImpl.createProvider(ConfigurationImpl.java:197)
... 23 more
Caused by: java.lang.NoSuchMethodException: org.glassfish.jersey.media.multipart.internal.MultiPartReaderClientSide.<init>()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.newInstance(Class.java:412)
... 24 more
여기서 내가 누락 된 부분을 이해하지 못합니다. 나는 Jersey documentation를 따라 갔지만 나는 무엇인가 놓쳤을지도 모른다. .register(MultiPartFeature.class)
행을 제거하면 클라이언트를 사용하여 정상적으로 REST 테스트를 실행할 수 있습니다.
아이디어가 있으십니까?
. 내 classpath와 CXF의 이전 버전에있는 것처럼 들린다. 확인 중 ... 내 게시물을 업데이트합니다. – dadoonet