首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JSP 編譯錯誤「cannot be resolved」全景診斷:從導入缺失到拼寫錯誤

     編輯:程式設計綜合問答

錯誤現象

Vector cannot be resolved to a type
v cannot be resolved
Date cannot be resolved to a type

根因分析

  1. 缺少導入:Vector 屬於 java.util,Date 同理。原始碼 <%@ page import="java.ytil.*"%> 拼寫錯誤 (ytil → util)。
  2. 變數作用域:v 宣告在宣告片段 (<%! %>) 中,但方法 sendMessage 也是宣告片段,理論可見;實際上 JSP 編譯後 v 成為 Servlet 實例欄位,無問題。真正錯誤源於第 1 點導致編譯中斷,後續錯誤為連帶效應。
  3. HTML 拼寫錯誤:<A href="showMessage,jsp"> 應為 .jsp,雖不影響 Java 編譯,但會造成 404。

修正後指令區

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.util.*" %>  <!-- 修正拼寫 -->
<%@ page import="java.sql.*" %>   <!-- 若用 JDBC 需補充 -->
<HTML><BODY>
<%! 
    Vector v = new Vector();
    ServletContext application;
    synchronized void sendMessage(String s) {
        application = getServletContext();
        v.add(s);
        application.setAttribute("Mess", v);
    }
%>
<%
    // ... 業務邏輯 ...
    String time = new java.util.Date().toString(); // 明確完整類名
    // ...
    out.print("<A href=\"showMessage.jsp\">查看留言板"); // 修正逗號
%>
</BODY></HTML>

最佳實踐

  • **杜絕 Scriptlet**:改用 MVC (Spring MVC/Struts2) + JSTL/EL,將 Java 代碼移出 JSP。
  • **啟用 IDE 即時檢查**:Eclipse/IDEA 會紅線提示導入缺失。
  • **統一編碼**:頁面、資料庫、JVM file.encoding 全鏈路 UTF-8。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved