Ubuntu + Eclipse 部署項目 `OAobject`,調用 `servletContext.getRealPath("/")` 返回:
/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/OAobject/
期望獲取工作區源碼目錄 `/workspace/OAobject/`。
Eclipse WTP(Web Tools Platform)發布機制:將項目複製到臨時目錄 `wtpwebapps` 模擬生產環境部署結構。`getRealPath` 返回的是當前運行時 Web 應用的物理部署路徑,而非源碼路徑。這是 Servlet 標準行為,與 IDE 無關。
試圖通過 `getRealPath` 讀取源碼目錄下的配置文件、模板文件。部署後源碼目錄不可用,僅部署產物(classes、lib、webapp)可用。
// 僅適用於開發環境,生產環境不可靠
String projectRoot = new File("").getAbsolutePath(); // Eclipse 工作區路徑
String sourcePath = projectRoot + "/OAobject";
強烈不建議在業務代碼中依賴源碼路徑,打包部署後必失效。