2015-06-24 39 views
3

首先,我應該說我是Maven的新手,甚至認爲我不認爲Maven必須處理這個錯誤。我使用Eclipse 4.2.1 M2E
我有這樣的代碼,我從ckan4j開發商無法實例化MessageBodyReader錯誤

Client c = ClientBuilder.newBuilder().register(MultiPartFeature.class).build(); 
WebTarget wt = c.target("192.168.1.2/action").path("resource_update"); 
Builder b = wt.request(); 
b.header("authorization", "fa0499d1-ffda-4590-82b3-4afdb9c91576"); 
FileDataBodyPart filePart = new FileDataBodyPart("upload", new File("/home/ilias/Downloads/OdtUtils.java")); 
FormDataMultiPart multipart = (FormDataMultiPart) new FormDataMultiPart().field("id","test2").bodyPart(filePart); 
String response_string = b.post(Entity.entity(multipart, multipart.getMediaType())).readEntity(String.class);  
System.out.println(response_string); 

了,這是我的pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>ckanTest2</groupId> 
    <artifactId>ckanConn2</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>CkanConnectTest</name>  

    <dependencies> 
    <dependency> 
     <groupId>org.jboss.resteasy</groupId> 
     <artifactId>resteasy-client</artifactId> 
     <version>3.0.2.Final</version> 
    </dependency>  
    <dependency> 
     <groupId>org.jboss.resteasy</groupId> 
     <artifactId>resteasy-multipart-provider</artifactId> 
     <version>3.0.11.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey.contribs</groupId> 
     <artifactId>jersey-multipart</artifactId> 
     <version>1.19</version> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>2.5.2</version> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-multipart</artifactId> 
     <version>2.18</version> 
    </dependency> 
    </dependencies> 
</project> 

我不是100%地肯定依賴關係,但我只是在編譯過程中搜索錯誤,並在此處添加結果,直到我沒有錯誤。 現在,當我建立的Maven(使用generate-sources)我得到這個

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: 
See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
[INFO] Scanning for projects... 
[INFO]    
[INFO]----------------------------------------------------------------------- 
[INFO] Building CkanConnectTest 0.0.1-SNAPSHOT 
[INFO]------------------------------------------------------------------------ 
[INFO]------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO]------------------------------------------------------------------------ [INFO] Total time: 0.298s 
[INFO] Finished at: Wed Jun 24 19:50:57 EEST 2015 
[INFO] Final Memory: 6M/58M 
[INFO]------------------------------------------------------------------------ 

甚至認爲這是在抱怨記錄器,我現在不急於立刻解決。除此之外,它似乎正在建設好。

當試圖執行java文件我得到這個

Exception in thread "main" java.lang.RuntimeException: Unable to instantiate MessageBodyReader 
    at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1371) 
    at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1310) 
    at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1232) 
    at org.jboss.resteasy.spi.ResteasyProviderFactory.register(ResteasyProviderFactory.java:2364) 
    at org.jboss.resteasy.spi.ResteasyProviderFactory.register(ResteasyProviderFactory.java:97) 
    at org.jboss.resteasy.util.FeatureContextDelegate.register(FeatureContextDelegate.java:37) 
    at org.jboss.resteasy.util.FeatureContextDelegate.register(FeatureContextDelegate.java:12) 
    at org.glassfish.jersey.media.multipart.MultiPartFeature.configure(MultiPartFeature.java:65) 
    at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1673) 
    at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1310) 
    at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1232) 
    at org.jboss.resteasy.spi.ResteasyProviderFactory.register(ResteasyProviderFactory.java:2364) 
    at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.register(ResteasyClientBuilder.java:361) 
    at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.register(ResteasyClientBuilder.java:48) 
    at cKanTest.CkanAlpha.main(CkanAlpha.java:17) 

Caused by: java.lang.IllegalArgumentException: Unable to find a public constructor for provider class 
    org.glassfish.jersey.media.multipart.internal.MultiPartReaderServerSide 
    at org.jboss.resteasy.spi.ResteasyProviderFactory.createConstructorInjector(ResteasyProviderFactory.java:2184) 
    at org.jboss.resteasy.spi.ResteasyProviderFactory.createProviderInstance(ResteasyProviderFactory.java:2173) 
    at org.jboss.resteasy.spi.ResteasyProviderFactory.addMessageBodyReader(ResteasyProviderFactory.java:748) 
    at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1366) 
    ... 14 more 

我使用的XML標籤只是爲了讓XML代碼的可讀性

+0

您是否曾經找到過解決方案? – Blueriver

+0

@Blueriver我真的不記得了!這是一個測試應用程序,以便了解API如何工作(對於ckan)。我的API雖然工作。你的問題是什麼?也許我可以幫助 –

+0

謝謝你的報價。我對自己的工作和這項技術非常滿意,所以我去了我的團隊中最有知識的人,幾個小時後他就開始工作。我認爲我們的問題是我們宣佈了兩次:一次在框架中,一次在.war中。最後,我們註釋了EJB提供的依賴關係,所以我們可以生成.war並且不會得到一個奇怪的依賴衝突,這顯然會導致我們的錯誤。或類似的東西。再次感謝您的報價。 – Blueriver

回答

0

我造成的組合,同樣的問題RestEasy的和澤西島(org.glassfish.jersey.media):

ResteasyProviderFactory factory = ResteasyProviderFactory.getInstance(); 
ResteasyProviderFactory.pushContext(javax.ws.rs.ext.Providers.class, factory); 

另一個提示是使用依賴球衣,中介a-multipart而不是球衣多部分