2017-02-20 29 views
0

Я пытаюсь выполнить загрузку изображений с использованием данных MutipartForm, и я также достиг этого. Но моя проблема заключается в том, что мои другие методы api rest не работают с данными формы Multipart. Я получаю java.lang.ClassNotFoundException: org.glassfish.jersey.server.internal.inject.ExtractorException я использую парование опарникаjava.lang.ClassNotFoundException: org.glassfish.jersey.server.internal.inject.ExtractorException

aopalliance-repackaged-2.5.0-b32.jar 
hk2-api-2.5.0-b32.jar 
hk2-locator-2.5.0-b32jar 
hk2-utils-2.5.0-b32jar 
javassist-3.40.0-GA.jar 
javax.annotation-api-1.2.jar 
javax.inject-2.5.0-b32.jar 
javax.servlet-api-3.0.1.jar 
javax.ws.rs-api-2.0.1.jar 
jaxb-api-2.2.7.jar 
jaxrs-ri-2.21.jar 
jersey-client.jar 
jersey-common.jar 
jersey-container-servlet-core.jar 
jersey-container-servlet.jar 
jersey-guava-2.25.1.jar 
jersey-media-jaxb.jar 
jersey-media-multipart-2.12.jar 
jersey-server.jar 
mimepull-1.9.3.jar 
org.osgi.core-4.2.0.jar 
osog-resource-locator-1.0.1.jar 
persistence-api-1.0.jar 
validation-api-1.1.0.Final.jar 

парование код я использую

@Path("/fileandjson") 
public class HelloWorld { 
    public static final String UPLOAD_FILE_SERVER = "D:/saveimages/"; 
    @POST 
    @Path("/sample") 
    @Produces(MediaType.APPLICATION_JSON) 
    public void sample(){ 
     System.out.println("inside web service "); 
    } 
    @POST 
    @Path("/upload/images") 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    public Response uploadImageFile(@FormDataParam("uploadFile") InputStream fileInputStream, 
            @FormDataParam("uploadFile") FormDataContentDisposition fileFormDataContentDisposition, 
            @FormDataParam("firstName") String name) { 
     String fileName = null; 
     String uploadFilePath = null; 
     try { 
      System.out.println("name : "+name); 
      fileName = fileFormDataContentDisposition.getFileName(); 
      uploadFilePath = writeToFileServer(fileInputStream, fileName); 
      System.out.println("fileName : "+fileName+" : uploadFilePath : "+uploadFilePath); 
     } 
     catch(IOException ioe){ 
      ioe.printStackTrace(); 
     } 
     finally{ 
      // release resources, if any 
     } 
     return Response.ok("File uploaded successfully at " + uploadFilePath).build(); 
    } 


    private String writeToFileServer(InputStream inputStream, String fileName) throws IOException { 

     OutputStream outputStream = null; 
     String qualifiedUploadFilePath = UPLOAD_FILE_SERVER + fileName; 

     try { 
      outputStream = new FileOutputStream(new File(qualifiedUploadFilePath)); 
      int read = 0; 
      byte[] bytes = new byte[1024]; 
      while ((read = inputStream.read(bytes)) != -1) { 
       outputStream.write(bytes, 0, read); 
      } 
      outputStream.flush(); 
     } 
     catch (IOException ioe) { 
      ioe.printStackTrace(); 
     } 
     finally{ 
      //release resource, if any 
      outputStream.close(); 
     } 
     return qualifiedUploadFilePath; 
    } 

Ошибка падения, которую я получаю.

SEVERE: Servlet /SampleForTestingrest2.0 threw load() exception 
java.lang.ClassNotFoundException: org.glassfish.jersey.server.internal.inject.ExtractorException 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
    at org.glassfish.jersey.media.multipart.internal.FormDataParamValueFactoryProvider.createValueFactory(FormDataParamValueFactoryProvider.java:361) 
    at org.glassfish.jersey.server.internal.inject.AbstractValueFactoryProvider.getValueFactory(AbstractValueFactoryProvider.java:134) 
    at org.glassfish.jersey.server.spi.internal.ParameterValueHelper.getValueFactory(ParameterValueHelper.java:176) 
    at org.glassfish.jersey.server.spi.internal.ParameterValueHelper.createValueProviders(ParameterValueHelper.java:140) 
    at org.glassfish.jersey.server.model.Invocable.getValueProviders(Invocable.java:320) 
    at org.glassfish.jersey.server.model.ResourceMethodValidator.checkValueProviders(ResourceMethodValidator.java:165) 
    at org.glassfish.jersey.server.model.ResourceMethodValidator.checkMethod(ResourceMethodValidator.java:106) 
    at org.glassfish.jersey.server.model.ResourceMethodValidator.visitJaxrsResourceMethod(ResourceMethodValidator.java:102) 
    at org.glassfish.jersey.server.model.ResourceMethodValidator.visitResourceMethod(ResourceMethodValidator.java:92) 
    at org.glassfish.jersey.server.model.ResourceMethod.accept(ResourceMethod.java:873) 
    at org.glassfish.jersey.server.model.ComponentModelValidator.validateWithErrors(ComponentModelValidator.java:161) 
    at org.glassfish.jersey.server.model.ComponentModelValidator.validateWithErrors(ComponentModelValidator.java:167) 
    at org.glassfish.jersey.server.model.ComponentModelValidator.validateWithErrors(ComponentModelValidator.java:167) 
    at org.glassfish.jersey.server.model.ComponentModelValidator.validateWithErrors(ComponentModelValidator.java:167) 
    at org.glassfish.jersey.server.model.ComponentModelValidator.access$000(ComponentModelValidator.java:90) 
    at org.glassfish.jersey.server.model.ComponentModelValidator$1.run(ComponentModelValidator.java:151) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267) 
    at org.glassfish.jersey.server.model.ComponentModelValidator.validate(ComponentModelValidator.java:146) 
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:548) 
    at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:182) 
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:348) 
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:345) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255) 
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:345) 
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:390) 
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170) 
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:362) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5176) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5460) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

ответ

0

Вы смешиваете разные варианты, например. у вас есть jaxrs-ri-2.21.jar и jersey-media-multipart-2.12.jar, но я думаю, что вам нужно jersey-media-multipart-2.21.jar.

Непонятно, какую конкретную версию на Джерси вы пытаетесь использовать, если приведенный выше подсказку не поможет вам решить проблему, вы должны обновить вопрос с помощью своего pom.xml (в общем, лучше показать pom.xml в пользу имен файлов jar).