使用自动装箱时JSP编译错误

时间:2015-05-25 11:26:41

标签: java jsp tomcat autoboxing

在Tomcat 7.0.54中执行以下JSP内容时出现以下错误

<%
    Object one =  new Long(1);
    Long value = Boolean.TRUE ? (Long)one : -1l;
%>

错误:

javax.servlet.ServletException: java.lang.Error: Unresolved compilation problem: 

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:348)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

任何指向问题原因的指针都将帮助我更好地理解问题。似乎jsp成功编译成.class文件,但在运行时我遇到了这个问题。提前谢谢。

3 个答案:

答案 0 :(得分:1)

尝试

<%
    Object one =  new Long(1);
    Long value = (Boolean.TRUE ? (Long)one : -1l);
%>

答案 1 :(得分:1)

-1l不是Long对象,它是原始数据long试试这个:

<%
    Object one =  new Long(1);
    Long value = Boolean.TRUE ? (Long)one : new Long(-1);
%>

当您使用JDK编译和运行代码时,所提到的代码可以找到,似乎tomcat中可能存在一个错误,它在编译之前尝试将JSP转换为Java

答案 2 :(得分:0)

Object one =  (long) 1;
Long value = Boolean.TRUE ? (Long)one : -1l;

尝试使用前面的代码而不是你的代码

在java中,以下是“不必要的拳击到长”

Object one =  new Long(1);