工程在windows下没有问题,但是部署到linux下就报错了,resin版本是4.0.16,
页面编码设置是:
<%@page contentType="text/html; charset=UTF-8" pageEncoding="GBK" language="java" session="false"%>
当然,UTF-8,GBK也都分别设置过,报的错误还是一样,已经三天没解决了,实在是崩溃了500 Servlet Exception
[show] com.caucho.jsp.JspParseException: Cannot change page encoding to 'UTF-8'
(old value 'GBK').  The page encoding may only be set once.java.lang.NullPointerException
at _jsp._test__jsp._jspService(test.jsp:20)
at _jsp._test__jsp._jspService(_test__jsp.java:34)
at com.caucho.jsp.JavaPage.service(JavaPage.java:64)
at com.caucho.jsp.Page.pageservice(Page.java:542)
at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:194)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:156)
at com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:95)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:287)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:792)
at com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:730)
at com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:689)
at com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:669)
at com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:617)
at com.caucho.network.listen.AcceptTask.doTask(AcceptTask.java:104)
at com.caucho.network.listen.ConnectionReadTask.runThread(ConnectionReadTask.java:98)
at com.caucho.network.listen.ConnectionReadTask.run(ConnectionReadTask.java:81)
at com.caucho.network.listen.AcceptTask.run(AcceptTask.java:67)
at com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164)
at com.caucho.env.thread.ResinThread.run(ResinThread.java:130)

解决方案 »

  1.   

    linux下有自己的编码,你用linux的文本编辑器打开jsp,看看里面是不是有非法的不识别的空格,回车等符号
      

  2.   

    应该没有,页面都是英文的,我自己搜得结果错误应该是:
    http://www.oschina.net/code/explore/resin-4.0.13/modules/resin/src/com/caucho/jsp/ParseState.java
    这个类报的错,分析下原因我感觉是:pageEncoding=UTF-8,_pageEncoding=GBK(这个好像是_pageEncoding = _xml.getEncoding()确定的),也就是xml文件的encoding导致的,但是追踪不到setXML是从哪调用的
    另外,我搜的这个类的版本是4.0.13,我自己的是4.0.16,版本有点不同,报的错at com.caucho.env.thread.ResinThread.run(ResinThread.java:130)中的类在4.0.13中也没有