JAX-RS Jersey Ошибка java.lang.NoSuchMethodError
Я хотел реализовать функцию загрузки файлов для моего сервера отдыха на основе джерси.
когда я установил свой pom.xml (используя maven) на:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-jdk-http</artifactId>
<version>2.0</version>
</dependency>
я получаю следующую ошибку:
JAX-RS Jersey Error java.lang.NoSuchMethodError: org.glassfish.jersey.internal.util.ReflectionHelper.getContextClassLoaderPA()Ljava/security/PrivilegedAction;
без зависимости "jersey-media-multipart" остальной сервер работает, но я не могу использовать функции загрузки файлов.
Следуя важной части исходного кода:
ResourceConfig resourceConfig = new ResourceConfig(RestWebServer.class);
//resourceConfig.register(MultiPartFeature.class);
URI endPoint = new URI(pathServer);
server = JdkHttpServerFactory.createHttpServer( endPoint, resourceConfig );
RestWebserver.java:
@Path("/fileupload")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormParam("file") InputStream uploadedInputStream,
@FormParam("file") FormDataContentDisposition fileDetail)
{
String uploadedFileLocation = "c://" + fileDetail.getFileName();
// save it
saveToFile(uploadedInputStream, uploadedFileLocation);
String output = "File uploaded via Jersey based RESTFul Webservice to: " + uploadedFileLocation;
return Response.status(200).entity(output).build();
}
2 ответа
Решение
Не пользователь Джерси, так что я просто догадываюсь, но у вас, вероятно, несоответствие банок.
Попробуйте заменить свою вторую запись на это:
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-jdk-http</artifactId>
<version>2.4.1</version>
</dependency>
Основываясь на моем предположении о главе 8, вы зарегистрировали свой код клиент / сервер?