有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java jsp编译错误

我在一个开源项目的jsp页面中有以下行:

<html:option value="micg">µg</html:option>

当我使用maven编译它时,会生成以下代码:

_jspx_th_html_005foption_005f9.setValue("micg");
    int _jspx_eval_html_005foption_005f9 = _jspx_th_html_005foption_005f9.doStartTag();
    if (_jspx_eval_html_005foption_005f9 != javax.servlet.jsp.tagext.Tag.SKIP_BODY) {
      if (_jspx_eval_html_005foption_005f9 != javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {
        out = _jspx_page_context.pushBody();
        _jspx_th_html_005foption_005f9.setBodyContent((javax.servlet.jsp.tagext.BodyContent) out);
        _jspx_th_html_005foption_005f9.doInitBody();
      }
      do {
        out.write('Â');
        out.write('µ');
        out.write('g');
        int evalDoAfterBody = _jspx_th_html_005foption_005f9.doAfterBody();
        if (evalDoAfterBody != javax.servlet.jsp.tagext.BodyTag.EVAL_BODY_AGAIN)
          break;
      } while (true);
      if (_jspx_eval_html_005foption_005f9 != javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {
        out = _jspx_page_context.popBody();
      }
    }

这导致编译生成的java文件时出现以下错误:

[javac] Compiling 1375 source files
[javac] warning: [options] bootstrap class path not set in conjunction 
          with -source 1.5
[javac] D:\src\WriteScript_jsp.java:2310: error: unclosed character literal
[javac]         out.write('Â');
[javac]                   ^
[javac] D:\src\WriteScript_jsp.java:2310: error: illegal character: \8218
[javac]         out.write('Â');
[javac]                     ^
[javac] D:\src\WriteScript_jsp.java:2310: error: unclosed character literal
[javac]         out.write('Â');
[javac]                      ^
[javac] D:\src\WriteScript_jsp.java:2311: error: unclosed character literal
[javac]         out.write('µ');
[javac]                   ^
[javac] D:\src\WriteScript_jsp.java:2311: error: ';' expected
[javac]         out.write('µ');
[javac]                     ^
[javac] D:\src\WriteScript_jsp.java:2311: error: unclosed character literal
[javac]         out.write('µ');
[javac]                      ^
[javac] 6 errors

请帮助我如何删除此错误:(我使用的是Windows 7 64位和JDK 1.7版


共 (2) 个答案

  1. # 1 楼答案

    生成的Java源代码中存在Â表示您已将JSP源代码保存为ISO-8859-x而不是UTF-8(或者JSP解析器将其读取为ISO-8859-x而不是UTF-8,这是不太可能的)。检查/重新配置源代码编辑器,确保它将JSP源代码保存为UTF-8

  2. # 2 楼答案

    按照其他响应者的建议,确保-encoding到处都正确的另一种方法是不要在文件中使用非低位ASCII字符。这可以通过\u转义完成,例如,通过编写:

     out.write('\u006c');
    

    。。而不是:

     out.write('Â');
    

    远没有这么漂亮或方便,但在大型团队中工作要容易得多,尤其是当你的应用程序中有限的位置上只有可怕的外语字符时,就像大多数处理这类事情的开发团队所做的那样