2016-11-01 58 views
0

我正在使用resteasy爲文件上傳提供web服務。我有一些web服務就緒(GET服務返回一些對象的列表作爲JSON等),這一切工作。但是,試圖通過郵遞員做一些文件上傳時(內容類型設置爲multipart/form-數據;邊界=「XXXX」)我得到在服務器端以下錯誤:使用resteasy時MultipartFormDataInputImpl的java.lang.NoClassDefFoundError

java.lang.NoClassDefFoundError: org/jboss/resteasy/plugins/providers/multipart/MultipartFormDataInputImpl 
at org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataReader.readFrom(MultipartFormDataReader.java:54) 
at org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataReader.readFrom(MultipartFormDataReader.java:23) 
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.readFrom(AbstractReaderInterceptorContext.java:59) 
at org.jboss.resteasy.core.interception.ServerReaderInterceptorContext.readFrom(ServerReaderInterceptorContext.java:62) 
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:51) 
at org.jboss.resteasy.plugins.interceptors.encoding.GZIPDecodingInterceptor.aroundReadFrom(GZIPDecodingInterceptor.java:59) 
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:53) 
at org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBodyParameterInjector.java:150) 
at org.jboss.resteasy.core.MethodInjectorImpl.injectArguments(MethodInjectorImpl.java:89) 
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:112) 
at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:288) 
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:242) 
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:229) 
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356) 
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179) 
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) 
at org.tynamo.resteasy.ResteasyRequestFilter.service(ResteasyRequestFilter.java:98) 
at $HttpServletRequestFilter_62c2163ae572.service(Unknown Source) 
at $HttpServletRequestHandler_62c2163ae576.service(Unknown Source) 
at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) 
at $HttpServletRequestFilter_62c2163ae56f.service(Unknown Source) 
at $HttpServletRequestHandler_62c2163ae576.service(Unknown Source) 
at org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.java:796) 
at $HttpServletRequestHandler_62c2163ae576.service(Unknown Source) 
at $HttpServletRequestHandler_62c2163ae56e.service(Unknown Source) 
at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:166) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673) 
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) 
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Thread.java:745) 

我的相關POM部分看起來是這樣的:

<dependency> 
     <groupId>org.jboss.resteasy</groupId> 
     <artifactId>resteasy-jackson-provider</artifactId> 
     <version>2.3.4.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.resteasy</groupId> 
     <artifactId>resteasy-multipart-provider</artifactId> 
     <version>3.0.19.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.tynamo</groupId> 
     <artifactId>tapestry-resteasy</artifactId> 
     <version>0.4.0</version> 
    </dependency> 

首先,我認爲這可能是與圖書館和類路徑,所以我嘗試編譯(但據悉這是默認的,所以可能不會產生影響)。我也檢查了類似的問題(Resteasy: java.lang.NoClassDefFoundError: javax/servlet/ServletContext),但發現我已經包含了javax.servlet-api。

另外,如果我嘗試切換到resteasy-multipart-provider的版本2.3.10.Final,我甚至會在應用程序啓動時得到一個Exception(java.lang.ClassNotFoundException:MultipartFormDataInput)。

所以任何人都可以給我一個提示錯誤可能來自哪裏的提示嗎?

回答

0

就像現在的問題似乎是由添加

<dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxrs</artifactId> <version>3.0.4.Final</version> </dependency>

固定
相關問題