今天在项目开发用到jersey的时候,当在客户端调用client.register(MultiPartFeature.class)代码的时候一直报下面的错误:
Exception in thread "main" java.lang.RuntimeException:java.lang.InstantiationException:org.glassfish.jersey.media.multipart.internal.MultiPartReaderClientSide
atorg.apache.cxf.jaxrs.impl.ConfigurationImpl.createProvider(ConfigurationImpl.java:208)
atorg.apache.cxf.jaxrs.impl.ConfigurableImpl.register(ConfigurableImpl.java:102)
atorg.apache.cxf.jaxrs.impl.ConfigurableImpl.register(ConfigurableImpl.java:97)
atorg.apache.cxf.jaxrs.impl.ConfigurableImpl$FeatureContextImpl.register(ConfigurableImpl.java:139)
atorg.apache.cxf.jaxrs.impl.ConfigurableImpl$FeatureContextImpl.register(ConfigurableImpl.java:120)
atorg.glassfish.jersey.media.multipart.MultiPartFeature.configure(MultiPartFeature.java:67)
atorg.apache.cxf.jaxrs.impl.ConfigurableImpl.register(ConfigurableImpl.java:86)
atorg.apache.cxf.jaxrs.impl.ConfigurableImpl.doRegister(ConfigurableImpl.java:117)
atorg.apache.cxf.jaxrs.impl.ConfigurableImpl.register(ConfigurableImpl.java:102)
atorg.apache.cxf.jaxrs.impl.ConfigurableImpl.register(ConfigurableImpl.java:97)
atorg.apache.cxf.jaxrs.client.spec.ClientImpl.register(ClientImpl.java:174)
atorg.apache.cxf.jaxrs.client.spec.ClientImpl.register(ClientImpl.java:51)
atcom.infosoul.mserver.log.test.RestClient.(RestClient.java:38)
atcom.infosoul.mserver.log.test.RestClient.getRestClientInst(RestClient.java:48)
atcom.infosoul.mserver.log.test.main.main(main.java:11)
Caused by: java.lang.InstantiationException:org.glassfish.jersey.media.multipart.internal.MultiPartReaderClientSide
atjava.lang.Class.newInstance(Class.java:359)
atorg.apache.cxf.jaxrs.impl.ConfigurationImpl.createProvider(ConfigurationImpl.java:206)
... 14 more
纠结了很久都没有找到错误,后面重新在错误中看到调用了cxf相关的东西,然后在pom.xml里面去看,才发现在项目中即使用了cxf,也使用了jersey,当jersey在执行方法的时候,系统错误地调用了cxf的方法,最后只有把pom文件中与cxf相关的注释方才解决问题。至于为什么两者冲突,现在还没找到原因,希望高手指点。
jersey学习地址:https://jersey.java.net