| 平台 | 類庫放置位置 | CLASSPATH 載入機制 |
|---|---|---|
| Linux / Unix | $CATALINA_HOME/lib/ | 啟動腳本 catalina.sh 自動將 lib/*.jar 加入 CLASSPATH |
| Windows | %CATALINA_HOME%\lib\ | 啟動腳本 catalina.bat 同樣自動載入 lib 目錄,無需手動設定環境變數 CLASSPATH |
**原文稱「Windows 平台下的 Tomcat 不行,必須手工添加到 CLASSPATH 環境變量中」是錯誤資訊。**
$CATALINA_HOME/lib (或 %CATALINA_HOME%\\lib) 下的所有 JAR/ZIP 檔案並加入系統類載入器**。lib/ 即可**,重啟 Tomcat 生效。CLASSPATH,會干擾 Tomcat 類載入機制,導致版本衝突、類找不到等詭異問題。Bootstrap ClassLoader
↑ (JAVA_HOME/jre/lib)
System ClassLoader
↑ (CATALINA_HOME/bin/bootstrap.jar, tomcat-juli.jar)
Common ClassLoader ← $CATALINA_HOME/lib/*.jar (共用庫)
↑
Webapp ClassLoader (每個 Web 應用獨立)
↑ (WEB-INF/classes, WEB-INF/lib/*.jar)
$CATALINA_HOME/lib/WEB-INF/lib/ (隨 WAR 部署,隔離版本)WEB-INF/classes/CLASSPATH、JAVA_OPTS 加入 -classpath、將 JAR 放入 JRE lib/ext (已棄用機制)# Linux
ps -ef | grep catalina
# 查看 java 命令列 -classpath 參數包含 lib/*.jar
# Windows
wmic process get commandline | findstr java
# 同理檢查 -classpath
**Linux、Windows 同樣只需將 JAR 放入 $CATALINA_HOME/lib/,Tomcat 啟動自動載入。** 原文 Windows 需手動設定 CLASSPATH 的說法**不正確**,請勿遵循。