Jersey client file upload exception: NoClassDefFoundError: org/glassfish/jersey/message/internal/HeadersFactory

Jersey client file upload exception: NoClassDefFoundError: org/glassfish/jersey/message/internal/HeadersFactory

我正在尝试创建一个球衣客户端来上传文件。我已经搜索了 i-net,但我无法为我的异常找到合适的解决方案。

这是我的客户端代码:

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();

}

如果我尝试添加 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 请求。但我也需要发送文件。 我希望有人能帮助我。

你是 missing a dependency:

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