在 Windows 上進行 Java Web 開發,JDK 與 Tomcat 的正確安裝配置是起跑線。本文提供最新、最全、避坑指南,涵蓋環境變量設置、Tomcat 服務安裝、端口修改、常見錯誤排查,適合初學者與遷移環境的開發者。
C:\Program Files\Java\jdk-17 (無空格、無中文、非系統盤根目錄)路徑:此電腦 → 右鍵屬性 → 高級系統設置 → 環境變量
| 變量名 | 變量值 (示例) | 說明 |
|---|---|---|
| JAVA_HOME | C:\Program Files\Java\jdk-17 | JDK 安裝根目錄 (到 bin 上一層),核心變量 |
| CLASSPATH | .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar | . 代表當前目錄,JDK 9+ 可省略 dt.jar/tools.jar |
| Path | %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin | 追加到現有 Path 末尾,分號分隔。JDK 9+ 無獨立 jre 目錄 |
⚠ 注意:JDK 9 起移除獨立 JRE 目錄,
%JAVA_HOME%\jre\bin無需配置。建議僅配置%JAVA_HOME%\bin。
打開新的 CMD 窗口 (舊窗口不生效):
> java -version
java version "17.0.x" ...
> javac -version
javac 17.0.x
> java -version
// 輸出版本信息即成功,若提示「不是內部命令」請檢查 Path 配置
Core: 64-bit Windows zipD:\DevTools\apache-tomcat-9.0.x| 變量名 | 變量值 (示例) | 說明 |
|---|---|---|
| CATALINA_HOME | D:\DevTools\apache-tomcat-9.0.x | Tomcat 安裝根目錄 |
| CATALINA_BASE | %CATALINA_HOME% | 多實例部署時區分,單實例同 HOME |
| Path | %CATALINA_HOME%\bin | 追加,使 startup.sh/batalin 命令全局可用 |
CLASSPATH 無需添加 servlet-api.jar,Web 應用自帶依賴,全局添加反而易導致版本衝突。
> cd /d %CATALINA_HOME%\bin
> service.bat install Tomcat9
// 成功輸出:The service 'Tomcat9' has been installed.
service.bat install MyTomcatTomcat9.exe //MS// (監視器)、Tomcat9 //ES// (編輯服務參數)方式一:服務管理器啟動「Apache Tomcat 9.0 Tomcat9」
方式二:CMD 執行 startup.bat (前台運行,關閉窗口即停止)
瀏覽器訪問:https://localhost:8080
出現「If you're seeing this page, you've successfully installed Tomcat. Congratulations!」即成功。
編輯 %CATALINA_HOME%\conf\server.xml:
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改後重啟 Tomcat 生效。端口 < 1024 需管理員權限,建議用 8088/8081 等。
創建 %CATALINA_HOME%\bin\setenv.bat (Windows 不識別 setenv.sh):
set JAVA_OPTS=-server -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -Dfile.encoding=UTF-8
-server:服務器模式 JIT 優化-Xms/Xmx:堆初始/最大值,建議設相同避免震蕩-Dfile.encoding=UTF-8:強制 UTF-8,防止中文亂碼webapps/,自動熱部署<Host> 下添加 <Context path="/myapp" docBase="D:/projects/myapp" />conf/Catalina/localhost/ 創建 myapp.xml,內容同 Context 配置 (推薦,不污染 server.xml)| 現象 | 可能原因 | 解決方案 |
|---|---|---|
| 啟動閃退 / 8080 無響應 | 端口被佔用 (常見: Oracle 佔 8080) | 修改 server.xml 端口 或 `netstat -ano | findstr 8080` 找到 PID 杀进程 |
| 中文亂碼 | Tomcat 默認 ISO-8859-1 | server.xml Connector 添加 `URIEncoding="UTF-8"` + setenv.bat `-Dfile.encoding=UTF-8` |
| 服務安裝失敗 | 無管理員權限 / 路徑含空格 | 以管理員運行 CMD / 重新安裝至無空格路徑 |
| ClassNotFound: Servlet | 手動把 servlet-api.jar 放入 CLASSPATH | 移除 CLASSPATH 中的 servlet-api.jar,Web 應用自帶依賴 |
| HTTPS 配置報錯 | keystore 路徑/密碼錯誤 | 檢查 server.xml SSL Connector 的 keystoreFile/keystorePass |
apache-tomcat-9.0.x/
├── bin/ # 啟動/關閉腳本、服務安裝、setenv.bat
├── conf/ # 核心配置: server.xml, web.xml, tomcat-users.xml, context.xml
├── lib/ # Tomcat 運行依賴 jar (servlet-api, jsp-api 等)
├── logs/ # 日志: catalina.out, localhost.xxx.log, access_log
├── webapps/ # 默認應用部署目錄 (ROOT, manager, host-manager)
├── work/ # JSP 編譯生成的 Servlet 源碼/類文件 (可安全刪除)
└── temp/ # 臨時文件
Windows 下 Java + Tomcat 環境搭建的核心在於:路徑無空格、環境變量精準、服務化管理、編碼統一 UTF-8、端口避開衝突。掌握 setenv.bat JVM 調優、Context 多項目部署、logs 故障定位三板斧,即可從容應對開發與測試環境的各類場景。