2016-01-18 108 views
1

即時通訊嘗試創建球衣客戶端來上傳文件。我已經搜索了我的網絡,但我找不到適合我的例外的解決方案。Jersey客戶端文件上傳異常:NoClassDefFoundError:org/glassfish/jersey/message/internal/HeadersFactory

這是我的客戶端代碼:

import javax.ws.rs.client.Client; 
import javax.ws.rs.client.ClientBuilder; 
import javax.ws.rs.client.Entity; 
import javax.ws.rs.client.WebTarget; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 
import javax.ws.rs.core.UriBuilder; 

import org.glassfish.jersey.client.ClientConfig; 
import org.glassfish.jersey.media.multipart.MultiPart; 
import org.glassfish.jersey.media.multipart.MultiPartFeature; 

//... 

private static void clientUploadTest() { 
    ClientConfig config = new ClientConfig(); 
    Client client  = ClientBuilder.newClient(config); 
    client.register(MultiPartFeature.class); 
    URI baseUri   = UriBuilder.fromUri("http://localhost/rest/test").build(); 
    WebTarget target = client.target(baseUri); 

    MultiPart multiPart = new MultiPart(); 

} 

如果我嘗試添加的多,我得到了以下異常。我嘗試了不同的方式,但我解決了我的問題。我也試過這樣的事情:

final FileDataBodyPart filepart  = new FileDataBodyPart("file", new File("C:/Users/admin/Downloads/testtext.txt")); 
FormDataMultiPart formDataMultiPart = new FormDataMultiPart(); 
final FormDataMultiPart multiPart = (FormDataMultiPart) formDataMultiPart.field("foo", "bar").bodyPart(filepart); 

但我得到了同樣的錯誤。

Exception in thread "main" java.lang.NoClassDefFoundError: org/glassfish/jersey/message/internal/HeadersFactory at org.glassfish.jersey.media.multipart.BodyPart.<init>(BodyPart.java:70) at org.glassfish.jersey.media.multipart.MultiPart.<init>(MultiPart.java:66) at de.restclient.requests.ClientTest.clUploadtest(ClientTest.java:64) at de.restclient.requests.ClientTest.main(ClientTest.java:46) Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.message.internal.HeadersFactory at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 4 more

這是我進口的球衣文件。

Jersey files

林能正常GET和POST請求發送到服務器。但我也需要發送文件。 我希望有人能幫助我。

回答

1

你:

org.glassfish.jersey.media:jersey-media-multipart 
+0

THX,對於快速回答。我添加了最新的jersey-media-multipart.jar,現在沒有錯誤。 Thx的提示。我有球衣 - 媒體 - 多部分2.0 - m11,但我認爲,這不是最新的。 –

+0

您應該將版本與您已有的版本進行匹配。 – nobeh