我得到了这个例外:
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:changeGroup = null;
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;
SOLUTION:
这是因为我使用了旧的JDK版本,但不包括autobxing 升级到jdk 1.6(或任何> = 1.5)后。现在工作正常。
答案 0 :(得分:4)
Boolean.valueOf
会返回Boolean
,而不是boolean
- 所以听起来你可能想要:
newItem = Boolean.valueOf((String)session.getAttribute("newItem")).booleanValue();
或者,或许更可读:
String newItemAttribute = (String) session.getAttribute("newItem");
newItem = Boolean.valueOf(newItemAttribute).booleanValue();
我有点惊讶它没有自动拆箱,但我想这取决于Jasper使用的Java编译器版本。
答案 1 :(得分:1)
尝试用以下代码替换第29行:
newItem = Boolean.valueOf((String)session.getAttribute("newItem")).booleanValue();
答案 2 :(得分:1)
newItem未在您的示例中定义,但我怀疑它是一个布尔值。将.booleanValue()添加到第29行的末尾,将已解析的Boolean对象转换为布尔值的原始对象。