The method getContextPath() is undefined for the type ServletContext
專案中同時存在不同版本的 Servlet API JAR,導致類載入衝突:
javax-servlet5.1.12.jar (較新版本,含 getContextPath())servlet-2_5-api.jar (舊版 Servlet 2.5,無此方法)類載入器優先載入舊版 JAR 中的 ServletContext 介面,導致編譯/運行時找不到方法。
dependency:tree、Gradle dependencies、或 IDE 依賴視圖)servlet-2_5-api.jar)javax.servlet:javax.servlet-api:3.1.0 或 4.0.1)provided 作用域,避免打包進 WARServletContext.getContextPath() 是 Servlet 3.0 (Java EE 6) 新增getServletContextName()、getMajorVersion() 等<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope> <!-- 容器提供,不打包 -->
</dependency>
統一依賴管理、排除傳遞性衝突、使用 provided 作用域,徹底避免此類版本衝突。