同樣的 Tomcat 啟動錯誤 (tomcat-users.xml.new 拒絕存取),本文著重於原因分析:Vista 對 C:\Program Files 實施寫入保護,導致 MemoryUserDatabase 無法儲存暫存檔,進而引發嚴重例外與 Server 啟動中止。
MemoryUserDatabase.save() 嘗試寫入 tomcat-users.xml.new。FileNotFoundException,MemoryUserDatabaseFactory 無法建立 UserDatabase 實例。NamingContext.lookup 找不到 UserDatabase 元件。UserDatabaseRealm 初始化失敗 → LifecycleException → StandardServer.start 中止。Win7 繼承 Vista 的 UAC 與 Program Files ACL 保護機制,預設 Users 群組僅有「讀取/執行」權限,**無「寫入」權限**;Tomcat 預設以服務/一般使用者身分執行,自然無法寫入。
D:\Tomcat 等非受保護目錄。CATALINA_BASE 指向可寫入實例目錄。Users 寫入權限或以管理員執行 (不符合最小權限原則)。詳細操作步驟請參考上一篇「解決 Tomcat 在 Vista 下拒絕存取」完整指南。