【问题标题】:MalformedInputException at every page requested请求的每个页面出现 MalformedInputException
【发布时间】:2013-09-19 21:24:40
【问题描述】:

我的 Web 应用程序中的每个请求页面都出现此异常。由于它不指向任何应用程序代码,因此很难调试和检查导致问题的原因。

这是我应该担心的事情吗?有没有办法忽略这个异常?值得一提的是,页面渲染得很好。

Java 1.7.0_25、Apache Tomcat 7.0.27、Mojarra 2.1.13 和 PrettyFaces 3.3.3 作为 URL 重写器解决方案。

Sep 15, 2013 2:21:48 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [] threw exception
java.nio.charset.MalformedInputException: Input length = 1
    at java.nio.charset.CoderResult.throwException(CoderResult.java:260)
    at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:781)
    at com.sun.faces.application.ByteArrayWebOutputStream.writeTo(ByteArrayWebOutputStream.java:112)
    at com.sun.faces.application.ViewHandlerResponseWrapper.flushToWriter(ViewHandlerResponseWrapper.java:162)
    at com.sun.faces.application.view.JspViewHandlingStrategy.renderView(JspViewHandlingStrategy.java:263)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124)
    at com.ocpsoft.pretty.faces.application.PrettyViewHandler.renderView(PrettyViewHandler.java:163)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at br.com.tostring.weblibrary.filters.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:23)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

我意识到只有当我在类路径中添加 jstl-1.1.0.jar 以避免java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config 时才会发生此异常。如果我删除这个 jar,MalformedInputException 会停止,但会抛出 NoClassDefFoundError

【问题讨论】:

    标签: java jsf prettyfaces


    【解决方案1】:

    当输入字节序列对于给定字符集不合法或输入字符序列不是合法的 16 位 Unicode 序列时抛出 MalformedInputException。

    这发生在视图渲染期间,所以我猜你的 Facelet/XHTML 模板或其他地方有一些东西试图将不同编码的内容写入输出流。

    您是否使用任何类型的输出流修改扩展或配置?

    【讨论】:

    • 嗨@lincoln,我没有任何类型的输出流修改。奇怪的是,它只发生在我的生产环境中,不会发生在开发(本地)Tomcat 中。
    • 你知道你的生产环境有没有修改过的catalina.xml文件吗?不确定是什么导致了这种差异。
    • 是的,我通过 FTP 从我的服务器下载了整个 Tomcat 文件夹,并在本地启动了它。我的实例中没有抛出异常。
    • 我意识到只有当我在类路径中添加 jstl-1.1.0 以避免java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config 时才会发生此异常。如果我删除这个 jar,MalformedInputException 会停止,但会抛出 NoClassDefFoundError
    • 这看起来很眼熟,但不幸的是我没有解决方案:/ github.com/ocpsoft/prettytime/issues/55
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多