2013-04-09 16 views
7

मैं निम्न त्रुटि हो रही है "सूचकांक एक्स पर पैरामीटर पर विधि ... के लिए निर्भरता मिसिंग यू":जर्सी बाकी WS त्रुटि:

Apr 09, 2013 12:24:26 PM com.sun.jersey.spi.inject.Errors processErrorMessages 
SEVERE: The following errors and warnings have been detected with resource and/or provider classes: 
SEVERE: Missing dependency for method public javax.ws.rs.core.Response com.package.ImportService.specifyLocalFile(java.lang.String,java.lang.String,java.lang.String,java.lang.String) at parameter at index 0 
SEVERE: Missing dependency for method public javax.ws.rs.core.Response com.package.ImportService.specifyLocalFile(java.lang.String,java.lang.String,java.lang.String,java.lang.String) at parameter at index 1 
SEVERE: Missing dependency for method public javax.ws.rs.core.Response com.package.ImportService.specifyLocalFile(java.lang.String,java.lang.String,java.lang.String,java.lang.String) at parameter at index 2 
SEVERE: Missing dependency for method public javax.ws.rs.core.Response com.package.ImportService.specifyLocalFile(java.lang.String,java.lang.String,java.lang.String,java.lang.String) at parameter at index 3 
SEVERE: Method, public javax.ws.rs.core.Response com.package.ImportService.specifyLocalFile(java.lang.String,java.lang.String,java.lang.String,java.lang.String), annotated with POST of resource, class com.package.ImportService, is not recognized as valid resource method. 

मैं एक पहले से काम कर रहे POST पद्धति है कि एक मल्टीपार्ट डेटा लेता है (एक फ़ाइल अपलोड) और फिर कुछ सबमिट किए गए फ़ॉर्म से अन्य स्ट्रिंग डेटा फ़ील्ड, यहाँ कोड है:

@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
public Response uploadFile(
    @FormDataParam("file") InputStream uploadedInputStream, 
    @FormDataParam("file") FormDataContentDisposition fileDetail, 
    @FormDataParam("param1") String param1, 
    @FormDataParam("param2") String param2, 
    @FormDataParam("param3") String param3) { 
    .... 
    .... 
    return Response.status(200).entity(getEntity()).build(); 
} 

त्रुटि रास्ता प्रपत्र मापदंडों जर्सी से व्याख्या की जा रही है से संबंधित जा रहा है।

@POST 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
@Path("/local") 
public Response specifyLocalFile(
    @FormDataParam("file") String fullFilePath, 
    @FormDataParam("param1") String param1, 
    @FormDataParam("param2") String param2, 
    @FormDataParam("param3") String param3) { 
    .... 
    .... 
    return Response.status(200).entity(getEntity()).build(); 
} 

उत्तर

11

एक छोटे से मैं अंत में कुछ रोचक मामलों, जैसे Failed unmarshalling issue with @FormParam, या Missing mulipart JAR dependency issue सबसे aproximate पोस्ट मेरी समस्या के लिए था इस की समीक्षा googling के बाद: "Missing dependecy for method", जो मैं के लिंक के साथ जवाब देने के लिए यहाँ कोड है कि विफल रहता है यह पोस्ट, क्योंकि मुझे उस विशेष व्यक्ति के लिए कोई मौजूदा समाधान नहीं दिख रहा है।

मुद्दा @FormDataParam एनोटेशन, जब मूल्य MediaType.APPLICATION_FORM_URLENCODED साथ विधि-स्तरीय @Consumes एनोटेशन के साथ प्रयोग किया से संबंधित होना दिखाई दिया।

जब मैंने @FormParam के साथ प्रत्येक सादा-पाठ फ़ील्ड को एनोटेट करने के लिए विधि हस्ताक्षर बदल दिया, तो अपवाद समाप्त हो गया। नीचे तय कोड की जाँच करें:

@POST 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
@Path("/local") 
public Response specifyLocalFile() 
    @FormParam("file") String fullFilePath, 
    @FormParam("param1") String param1, 
    @FormParam("param2") String param2, 
    @FormParam("param3") String param3) { 
    .... 

डेटा प्राप्त की जा रही के प्रकार माइम-एन्कोडिंग से निपटने के लिए नहीं है, तो @FormParam एनोटेशन क्रमबद्धता के माध्यम से सामग्री के साथ सौदा करने का प्रयास करेंगे; इसके विपरीत, @FormDataParam एनोटेशन के लिए कुछ विशिष्ट हैंडलिंग की आवश्यकता होती है जो कॉन्फ़िगर किया गया है जब @Consumes एनोटेशन में MediaType.MULTIPART_FORM_DATA है। उम्मीद है की यह मदद करेगा।

3

मुझे मेरी परियोजना पर एक ही त्रुटि थी।

1) आपको सभी जर्सी निर्भरताओं को एक ही संस्करण में रखना होगा।

@ApiParam(value = "import file", required = true) @FormDataParam("file") InputStream inputStreamCsv 

उन्हें निकाला जा रहा है चाल थी: https://github.com/swagger-api/swagger-core/issues/1530

:

@FormDataParam("file") InputStream inputStreamCsv 

यहाँ लिंक समस्या mentionning है

2) मैं भी अकड़ एनोटेशन @ApiParam की वजह से समस्या थी अंत में, सब कुछ इस के साथ काम किया:

@POST 
@Path("/import") 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
public Response import(
     @FormDataParam("file") InputStream inputStreamCsv, 
     @FormDataParam("file") FormDataContentDisposition detailsFichier) {...} 
+0

स्वैगर एनोटेशन को हटाने से मेरे लिए चाल थी। धन्यवाद। –