例外:com.sun.jersey.spi.inject.Errors $ ErrorMessagesException

我正在使用Jersey API进行Web服务。 我正在从客户端向服务器发送多部分数据。 Web服务开始执行时,我遇到exception。

@POST @Path("uploadphoto") @Consumes(MediaType.MULTIPART_FORM_DATA) @Produces("text/plain") public String uploadNotices(@FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail) { String uploadedFileLocation = "d:/" + fileDetail.getFileName(); // save it try { writeToFile(uploadedInputStream, uploadedFileLocation); } catch(Exception e) { return "no"; } return "yes"; } // save uploaded file to new location private void writeToFile(InputStream uploadedInputStream, String uploadedFileLocation) throws Exception { OutputStream out = new FileOutputStream(new File(uploadedFileLocation)); int read = 0; byte[] bytes = new byte[1024]; out = new FileOutputStream(new File(uploadedFileLocation)); while ((read = uploadedInputStream.read(bytes)) != -1) { out.write(bytes, 0, read); } out.flush(); out.close(); } 

堆栈跟踪:

 SEVERE: The following errors and warnings have been detected with resource and/or provider classes: SEVERE: Missing dependency for method public java.lang.String com.homebulletin.resources.NoticeResources.uploadNotices(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 0 SEVERE: Missing dependency for method public java.lang.String com.homebulletin.resources.NoticeResources.uploadNotices(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 1 SEVERE: Method, public java.lang.String com.homebulletin.resources.NoticeResources.uploadNotices(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition), annotated with POST of resource, class com.homebulletin.resources.NoticeResources, is not recognized as valid resource method. Jun 18, 2013 10:55:17 AM org.apache.catalina.core.ApplicationContext log SEVERE: StandardWrapper.Throwable com.sun.jersey.spi.inject.Errors$ErrorMessagesException at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170) at com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136) at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199) at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:765) at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:760) at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:489) at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:319) at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:609) at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210) at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374) at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557) at javax.servlet.GenericServlet.init(GenericServlet.java:212) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:806) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source) Jun 18, 2013 10:55:17 AM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Allocate exception for servlet Home Bulletin com.sun.jersey.spi.inject.Errors$ErrorMessagesException at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170) at com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136) at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199) at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:765) at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:760) at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:489) at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:319) at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:609) at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210) at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374) at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557) at javax.servlet.GenericServlet.init(GenericServlet.java:212) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:806) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source) 

您的项目中似乎缺少几个jar子。尝试将这些添加到您的项目中:

jersey,multipart.jar

mimepull.jar

如果您使用的是maven,则可以添加此依赖项:

  com.sun.jersey.contribs jersey-multipart 1.8  

如果需要,可以更改jar的版本

还要确保你的jersey-multipart jar的版本应该与jersey bundle jar的版本相同

忘记在方法名称之上添加@POST@Get也会导致此错误

它面临同样的错误,因为具有相同路径名(字符串)的相同@Path注释。

 @Path('samepath') /// samepath cause Jersey Error at run time. /* Method 1*/ @Path('samepath') /* Method 2 */ 

当使用@FormParam @POST参数的@FormParam (期望@POST )时,我看到了完全相同的错误。

希望它会帮助某人,因为它不是很直观的发现。

com.sun.jersey.spi.inject.Errors $ ErrorMessagesException

当我有两个具有相同路径但不同查询参数的@GET方法时发生。

如果重命名控制器类,在没有mvn clean情况下mvn install mvn clean并将war文件放到/webapps文件夹中,也可能发生这种情况。

用以下代码替换web.xml

  Jersey Web Application  org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 1   Jersey Web Application /*  

我遇到了这个问题,因为我的课程中没有参数构造函数

 @Path("/deviceconfigs") public class DeviceConfigInterface extends ComInterfaceGen { public DeviceConfigInterface(Class type) { super(DeviceConfigApi.class); } }. 

当我没有使用参数构造函数时,问题就解决了。

我有一个类似的问题,因为我错过了为我的POST方法添加“Consumes”注释。 希望它可以帮到某人。

我知道这是迟到的。 但是在这里更新它以供将来参考。 更好地检查jar版本。 我遇到过同样的问题。 我使用的是1.16版本的平针核心和服务器,但这个我加了1.18。 它给出了同样的错误。 但后来我意识到并改为1.16然后工作正常。

它不适用于不同的版本。