Несоответствие типов: невозможно преобразовать логическое значение в логическое - PullRequest
1 голос
/ 18 января 2012

Я получаю это исключение:

org.apache.jasper.JasperException: невозможно скомпилировать класс для JSP

Я использую Tomcat 5.5.23.

org.apache.jasper.JasperException: невозможно скомпилировать класс для JSP:
Произошла ошибка в строке: 29 в файле jsp: /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) {
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.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;

РЕШЕНИЕ:

Это вызвано тем, что я использовал старую версию JDK , которая не включает автобокс после обновления до jdk 1.6 (или любого> = 1.5). Сейчас работает нормально.

Ответы [ 3 ]

4 голосов
/ 18 января 2012

Boolean.valueOf возвращает Boolean, а не boolean - так что это звучит так, как вы, вероятно, хотите:

newItem = Boolean.valueOf((String)session.getAttribute("newItem")).booleanValue();

Или, возможно, более наглядно:

String newItemAttribute = (String) session.getAttribute("newItem");
newItem = Boolean.valueOf(newItemAttribute).booleanValue();

Я немного удивлен, что он не распаковывается автоматически, но я думаю, это зависит от того, какую версию компилятора Java использует Jasper.

1 голос
/ 18 января 2012

newItem не определен в вашем примере, но я подозреваю, что это логическое значение.Добавьте .booleanValue () в конец строки 29, чтобы преобразовать проанализированный логический объект в логическое примитив.

1 голос
/ 18 января 2012

Попробуйте заменить строку 29 следующим:

newItem = Boolean.valueOf((String)session.getAttribute("newItem")).booleanValue();
...