title: Jersey REST WS Error: "Missing dependency for method... at parameter at index X"
body: <p>I am getting the following error:</p>
  
  <pre><code>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.
  </code></pre>
  
  <p>I have a previously working POST method that takes a Multipart data (a file upload) and then some other String data fields from the submitted form, here's the code:</p>
  
  <pre><code>@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();
  }
  </code></pre>
  
  <p>The error seems to be related to the way the form parameters are being interpreted by Jersey. here's the code that fails:</p>
  
  <pre><code>@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();
  }
  </code></pre>