【发布时间】:2012-01-18 13:50:13
【问题描述】:
我得到了这个例外:
org.apache.jasper.JasperException: 无法为 JSP 编译类
我正在使用 tomcat 5.5.23。
org.apache.jasper.JasperException:无法为 JSP 编译类:
在 jsp 文件中的第 29 行发生错误:/jsp/general/pos/DoMultiWordFrozen.jspf
类型不匹配:无法从布尔值转换为布尔值
26:
27: item = (ItemType)session.getAttribute("item");
28: id = Integer.parseInt((String)session.getAttribute("id"));
29: newItem = Boolean.valueOf((String)session.getAttribute("newItem"));
30:更改组=空;
31:
32: if (!newItem && item.getMultiWordFrozen() != null && id != 0) {
堆栈跟踪:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(jasper5-compiler-5.5.23.jar.so) org.apache.jasper.compiler.ErrorDispatcher.javacError(jasper5-compiler-5.5.23.jar.so) org.apache.jasper.compiler.JDTCompiler.generateClass(jasper5-compiler-5.5.23.jar.so) org.apache.jasper.compiler.Compiler.compile(jasper5-compiler-5.5.23.jar.so) org.apache.jasper.compiler.Compiler.compile(jasper5-compiler-5.5.23.jar.so) org.apache.jasper.compiler.Compiler.compile(jasper5-compiler-5.5.23.jar.so) org.apache.jasper.JspCompilationContext.compile(jasper5-compiler-5.5.23.jar.so) org.apache.jasper.servlet.JspServletWrapper.service(jasper5-compiler-5.5.23.jar.so) org.apache.jasper.servlet.JspServlet.serviceJspFile(jasper5-compiler-5.5.23.jar.so) org.apache.jasper.servlet.JspServlet.service(jasper5-compiler-5.5.23.jar.so) javax.servlet.http.HttpServlet.service(tomcat5-servlet-2.4-api-5.5.23.jar.so)
newitem 定义为:
boolean newItem = false;
解决方案:
这是因为我使用了不包含autobxing 的旧 JDK 版本 升级到 jdk 1.6 (或任何 >= 1.5 )后。现在工作正常。
【问题讨论】:
-
试试
newItem = session.getAttribute("newItem"); -
看来您使用的 Java 版本低于 1.5 来编译 JSP。在 1.5 中,应该自动完成拆箱(从“盒子”,即布尔对象转换为简单的“布尔”类型)。如果可能的话,我建议使用更新的 JDK
-
java -version java version "1.6.0_20" OpenJDK Runtime Environment (IcedTea6 1.9.10) (rhel-1.23.1.9.10.el5_7-x86_64) OpenJDK 64-Bit Server VM (build 19.0- b09,混合模式)
标签: java exception tomcat boolean