Unable to compile class for JSP
root cause: ...
现象:未导包时正常,导入特定包后 JSP 编译失败。
JSP 编译生成的 Servlet 类会 隐式导入 java.lang.*, javax.servlet.*, javax.servlet.jsp.*, javax.servlet.http.*。若导入包中含有与这些包同名的类,将引发编译歧义。
logs/catalina.out 或 localhost.yyyy-mm-dd.log 中有具体冲突类名<%@ page import="com.example.Util, com.example.Request" %>
<!-- Request 与 javax.servlet.http.HttpServletRequest 冲突 -->
<%
com.example.Request myReq = new com.example.Request(); // 显式全限定名
%>
| 场景 | 推荐做法 |
|---|---|
| 工具类调用 | Controller 准备好数据传给 JSP,JSP 仅展示 |
| 格式化/转换 | 自定义 EL 函数 / JSTL 标签库 |
| 复杂逻辑 | 移至 Service/Controller,JSP 保持极简 |