在 Eclipse/IntelliJ 中編寫 JSP 時,System.out.println() 或 String 出現紅線「cannot be resolved」,通常非語法錯誤,而是項目配置或環境問題。
JSP 最終編譯為 Servlet,需 servlet-api.jar 和 jsp-api.jar 提供編譯時依賴。
pom.xml 包含 provided 作用域依賴:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
lib/servlet-api.jar、jsp-api.jar 加入 Build Path(標記為 Provided)。Eclipse 中右鍵項目 → Properties → Project Facets → 勾選 Dynamic Web Module、Java、JavaScript → Runtimes 選中目標 Tomcat 版本。
tools.jar。嘗試:Project → Clean... → 勾選「Clean all projects」→ 重啟 IDE → File → Invalidate Caches / Restart (IntelliJ)。
在 JSP 頂部添加 <%@ page import="java.lang.System" %>,若紅線消失說明導入路徑問題;若仍報錯,多半是構建路徑缺庫。
${...}),減少編譯錯誤機率。development=false),提升性能。