类型不匹配:无法从布尔值转换为布尔值

yos*_*ssi 1 java tomcat boolean exception

我得到这个例外:

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: 更改组 = null;
31:
32: if (!newItem && item.getMultiWordFrozen() != null && id != 0) {
Stacktrace:
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。服务(jasper5-compiler-5.5.23.jar.so) javax.servlet.http.HttpServlet.service(tomcat5-servlet-2.4-api-5.5.23.jar.so)

新项目定义为:

boolean newItem = false;
Run Code Online (Sandbox Code Playgroud)

解决方案:

这是因为我 在升级到 jdk 1.6 (或任何 >= 1.5 )后使用了旧的 JDK 版本,该版本不包括autobxing 。现在工作正常。

Jon*_*eet 5

Boolean.valueOf返回 a Boolean,而不是boolean- 所以听起来您可能想要:

newItem = Boolean.valueOf((String)session.getAttribute("newItem")).booleanValue();
Run Code Online (Sandbox Code Playgroud)

或者,也许更易读:

String newItemAttribute = (String) session.getAttribute("newItem");
newItem = Boolean.valueOf(newItemAttribute).booleanValue();
Run Code Online (Sandbox Code Playgroud)

我有点惊讶它不会自动为您拆箱,但我想这取决于 Jasper 使用的 Java 编译器版本。

  • @yossi - 也许您的旧服务器正在运行更新版本的 Java,该版本提供自动装箱/拆箱。 (2认同)