Weblogic抛出CompilationException

时间:2010-06-29 14:01:18

标签: java jsp java-ee weblogic

javax.servlet.ServletException: weblogic.servlet.jsp.CompilationException: Failed to compile JSP /WEB-INF/content/intro.jsp
messages.tag:2:30: The encoding specified on the page cannot be different than detected encoding for the file.
<%@ tag body-content="empty" pageEncoding="utf-8" %>
                             ^----------^

如果我删除标记文件中的pageEncoding属性,它可以正常工作。但我认为这不是一个解决方案,因为它已经可以在另一个Weblogic服务器上运行。所以问题在于我的Weblogic配置。通过谷歌搜索错误,我没有找到任何东西。

有什么想法吗?我已经尝试在weblogic.xml中将编码设置为UTF-8以及许多其他我甚至无法记住的事情,我已经有一段时间了。

3 个答案:

答案 0 :(得分:2)

WebLogic 需要严格的编码。因此,在jsp中的任何其他声明之前,将页面编码标记添加为第一个声明。它解决了我的问题。

自:

<%@ page import="com.abc.xyz.Helperjsp"%> <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>

要:

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> <%@ page import="com.abc.xyz.Helperjsp"%>

答案 1 :(得分:1)

确保/WEB-INF/content/intro.jsp的内容也是UTF-8编码。

答案 2 :(得分:0)

扩展KarthikN的answer和我自己的comment

必须注意的是,重要的一点是包含pageEncoding 的指令必须是JSP页面上的第一个声明。正如我的评论所述:

  

这不仅仅是重新排列这两行。实际上,它甚至不是重新排列,而是更像将指令移到其他一切的顶端。 [...]这意味着您不能拥有JSP块,JSP指令,JSP注释或之前的任何内容。

例如,如果您提供错误的现有JSP页面是:

<%-- Some JSP comment --%>
<% /* (OR) Some Java comment in JSP block */ %>
<%@ page import="com.abc.xyz.Helperjsp"%>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>

我误解了KarthikN的例子并简单地交换了两条线。它无效:

<%-- Some JSP comment --%>
<% /* (OR) Some Java comment in JSP block */ %>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ page import="com.abc.xyz.Helperjsp"%>

当指令置于其他所有位置之上时,工作:

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%-- Some JSP comment --%>
<% /* (OR) Some Java comment in JSP block */ %>
<%@ page import="com.abc.xyz.Helperjsp"%>

虽然KarthikN的回答提到了这一点(“将页面编码标签添加为jsp”中任何其他声明之前的第一个声明),但提供的示例并没有明确说明。