本文更新原教程 (JDK 1.4.2 + Tomcat 4.1) 為現代 LTS 版本,舊版本已停止維護、存在安全漏洞,請勿用於生產。
C:\Program Files\Java\jdk-17。JAVA_HOME = C:\Program Files\Java\jdk-17 (安裝根目錄)Path,新增 %JAVA_HOME%\binCLASSPATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (現代 Maven/Gradle 專案通常不需手動設置)java -version、javac -version、echo %JAVA_HOME% 均正確輸出。apache-tomcat-9.0.x.zip 至目標目錄 (如 D:\apache-tomcat-9.0.80),**建議解壓而非 EXE 安裝**,便於多版本共存與權限控制。CATALINA_HOME = D:\apache-tomcat-9.0.80CATALINA_BASE = D:\apache-tomcat-9.0.80 (單實例通常相同)Path,新增 %CATALINA_HOME%\binstartup.bat,瀏覽器訪問 https://localhost:8080 見「If you're seeing this page...」貓頁面。shutdown.bat。CATALINA_HOME 目錄。webapp/WEB-INF/web.xml。index.jsp,點擊工具欄綠色三角形 (Run) 即可熱部署啟動。mysql-connector-j-8.x.x.jar (Maven 專案直接加依賴)。$CATALINA_HOME/lib/ (全域共享) 或專案 WEB-INF/lib/ (隔離)。context.xml):
<Resource name="jdbc/mydb"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC"
username="root"
password="123456"
maxTotal="20"
maxIdle="10"
maxWaitMillis="-1"/>
DataSource ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/mydb");| 現象 | 原因 | 解決 |
|---|---|---|
| JAVA_HOME 未設置 / 指向 JRE | 安裝路徑錯誤 | 指向 JDK 根目錄 (含 bin、lib、include) |
| Tomcat 閃退 / 雙擊 startup.bat 即關閉 | JAVA_HOME 錯誤、端口佔用、JDK/JRE 版本不匹配 | CMD 運行 startup.bat 看錯誤輸出;檢查 8080 端口 |
| JSP 編譯錯誤:Unsupported class file major version | Tomcat 版本不支援 JDK 版本 | Tomcat 9 支援 JDK 8-17,Tomcat 10.1+ 支援 JDK 11-21,請匹配版本 |
| 中文亂碼 | 編碼不一致 | JSP 頁面 pageEncoding="UTF-8"、Tomcat server.xml Connector 加 URIEncoding="UTF-8"、DB 連線 URL 加 characterEncoding=utf8 |
Dockerfile 基於 eclipse-temurin:17-jre + tomcat:9-jre17 或 Spring Boot 瘦鏡像。