2016-09-14 1 views
4

Я пытаюсь загрузить файл для JAX-RS с использованием multipart/form-data. Когда я пытаюсь запустить сервер он дает мне эту ошибку:MULTIPART_FORM_DATA: Не найден источник инъекции для параметра типа Response

[[FATAL] No injection source found for a parameter of type public javax.ws.rs.core.Response 
com.pododdle.resources.UploadResource.uploadAudio(int,int,java.io.InputStream,org.glassfish.jersey.media.multipart.FormDataContentDisposition) 
    at index 2.;source='ResourceMethod{httpMethod=POST, consumedTypes=[multipart/form-data], producedTypes=[text/html], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class 
com.pododdle.resources.UploadResource, handlerConstructors=[[email protected]]}, definitionMethod=public javax.ws.rs.core.Response 
com.pododdle.resources.UploadResource.uploadAudio(int,int,java.io.InputStream,org.glassfish.jersey.media.multipart.FormDataContentDisposition), parameters=[Parameter [type=int, source=auction_id, defaultValue=null], Parameter [type=int, source=category_id, defaultValue=null], Parameter [type=class java.io.InputStream, source=file, defaultValue=null], Parameter [type=class org.glassfish.jersey.media.multipart.FormDataContentDisposition, source=file, defaultValue=null]], responseType=class javax.ws.rs.core.Response}, nameBindings=[]}'] 

Мой pom.xml выглядит следующим образом:

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.glassfish.jersey</groupId> 
      <artifactId>jersey-bom</artifactId> 
      <version>${jersey.version}</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 
    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet-core</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-multipart</artifactId> 
     <version>${jersey.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.jvnet.mimepull</groupId> 
     <artifactId>mimepull</artifactId> 
     <version>1.9.6</version> 
    </dependency> 

</dependencies> 
<properties> 
    <jersey.version>2.22.1</jersey.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

Версия mimepull, который работает с версией 2.22.1 трикотажа я отсюда: https://www.versioneye.com/java/org.glassfish.jersey.media:jersey-media-multipart/2.22.1

Есть ли что-то, что мне не хватает или неправильно настроили? Am новичок в этом, так легко идти на меня ... :)

+1

Зарегистрировали ли вы 'MultipartFeature' в своем классе' ResourceConfig'? Что-то вроде 'register (MultipartFeature.class);'. –

+0

Привет, Кассио, у меня нет класса resourceconfig. Нужен ли он мне и что он делает? –

+0

У вас может быть один. Но вы также можете зарегистрировать эту функцию в 'web.xml'. –

ответ

4

После того, как вы не имеете ResourceConfig, попробуйте регистрации MultiparFeature в дескрипторе развертывания web.xml:

<init-param> 
    <param-name>jersey.config.server.provider.classnames</param-name> 
    <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value> 
</init-param> 

Если у Вас есть больше имена классов поставщика в <param-value>, используйте , для их разделения.

Смежные вопросы