记一个异常java.io.EOFException: No content to map to Object due to end of input

63 篇文章 11 订阅

一个提供rest接口的服务出现了以下的异常:

[WARN ] 2018-04-16 14:10:02,919 --http-nio-8090-exec-9-- [org.jboss.resteasy.core.ExceptionHandler] Failed executing POST /entrepot/query
org.jboss.resteasy.spi.ReaderException: java.io.EOFException: No content to map to Object due to end of input
        at org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBodyParameterInjector.java:183) ~[resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.core.MethodInjectorImpl.injectArguments(MethodInjectorImpl.java:89) ~[resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:112) ~[resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:288) ~[resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:242) ~[resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:229) ~[resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356) [resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179) [resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) [resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) [resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) [resteasy-jaxrs-3.0.7.Final.jar:na]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:534) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_71]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_71]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.0.11.jar:8.0.11]
        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_71]
Caused by: java.io.EOFException: No content to map to Object due to end of input
        at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2775) ~[jackson-mapper-asl-1.9.12.jar:1.9.12]
        at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2718) ~[jackson-mapper-asl-1.9.12.jar:1.9.12]
        at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1923) ~[jackson-mapper-asl-1.9.12.jar:1.9.12]
        at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.readFrom(AbstractReaderInterceptorContext.java:59) ~[resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.core.interception.ServerReaderInterceptorContext.readFrom(ServerReaderInterceptorContext.java:62) ~[resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:51) ~[resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.plugins.interceptors.encoding.GZIPDecodingInterceptor.aroundReadFrom(GZIPDecodingInterceptor.java:59) ~[resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:53) ~[resteasy-jaxrs-3.0.7.Final.jar:na]
        at org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBodyParameterInjector.java:150) ~[resteasy-jaxrs-3.0.7.Final.jar:na]
        ... 32 common frames omitted

ContentType类型是application/json; charset=UTF-8

最后查明问题的原因,有请求调用该接口时没有提供JSON参数,参数部分完全是空的

经过实验,参数部分有值但不是JSON格式时,报的异常和这个不同

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: java.io.EOFException: zlib输入流意外结束 这个错误通常是由于读取zlib压缩数据时出现问题导致的。可能是数据损坏或不完整,也可能是读取器没有正确处理数据。建议检查数据源和读取器的代码,以确保它们正确处理数据。 ### 回答2: Java中,当使用Zlib解压缩流时,如果出现异常java.io.eofexception: unexpected end of zlib input stream,将会导致解压缩失败。EOF表示文件已经到了结尾,而该错误的出现原因是Zlib流没有按照正确的规则结束。这意味着压缩数据中存在一些错误或损坏,从而导致解码失败。 该异常可能由许多原因引起,如文件损坏、网络错误、流不完整、缺少字节等等。因此,我们需要在代码实现中遵循以下建议,来避免或解决该异常: 1.进行数据完整性检查:在使用Zlib解压缩流之前,我们需要确保所读取的压缩数据是完整的。我们可以在读取数据时,添加一些数据完整性检查的代码,以确保数据的完整性,从而避免解压缩失败。 2.处理异常:当该异常发生时,我们需要注意及时处理异常,以避免程序崩溃。我们可以使用try-catch语句,来捕获该异常并进行相应的处理。例如,我们可以输出错误信息,以帮助我们更好地理解问题。 3.检查是否在压缩和解压缩时使用相同的设置:在使用Zlib进行压缩和解压缩时,我们需要确保使用相同的设置。如果两次设置不同,可能会导致无法正确解压缩数据,从而引发该异常。 4.检查压缩数据:有时候,该异常是由于压缩数据本身出现了错误或损坏而导致的。因此,在使用Zlib解压缩流时,我们需要仔细检查所有的压缩数据,以确定是否存在任何问题。 总的来说,java.io.eofexception: unexpected end of zlib input stream异常是在进行Zlib解压缩流时可能会出现的问题。我们需要熟悉Java中的Zlib库及其应用场景,同时也需要在代码实现中遵循上述建议,以避免该异常的出现,从而保证程序的正常运行。 ### 回答3: Java中的EOFException是指在输入流中没有更多的数据可供读取的情况下,尝试读取数据时会抛出的异常。而当出现"unexpected end of zlib input stream"的异常时,表示zlib输入流在解压时遇到了意料之外的流结束标志,通常是由于文件或网络数据传输过程中被截断或损坏导致。 具体地说,这个异常通常会在使用Java中的GZIPInputStream、InflaterInputStream、Inflater等压缩解压缩相关API进行数据读取时出现。当在读取时遇到了意料之外的数据结尾标志,就会抛出异常中提到的这个错误信息。 要解决这个问题,首先需要确保数据源或文件本身没有被损坏或截断。如果数据源没有问题,那么很可能是程序在使用压缩解压缩API时的问题,可能需要检查调用API时的参数、输入流和输出流的正确性,或者尝试使用其他的API进行处理。 另外,如果是在网络传输过程中出现问题,可以考虑使用文件传输协议,例如FTP或SFTP,在传输文件时自动进行校验,以保证传输的安全性和完整性。另外,也可以使用一些数据压缩和加密的工具,例如JZlib、Bouncy Castle等,对数据进行保护和处理,从而避免出现类似的异常

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值