首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

JFinal 專案部署 Tomcat 8 遭遇 JasperException:getDependants 回傳型別衝突解決

     編輯:Java 綜合教學

JFinal 專案部署 Tomcat 8 遭遇 JasperException:getDependants 回傳型別衝突解決

錯誤現象

嚴重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: [39] in the generated java file:
The return type is incompatible with JspSourceDependent.getDependants()

根本原因

專案依賴的 jetty-server-8.1.8.jar 中,JspSourceDependent.getDependants() 回傳型別為 List<String>;但 Tomcat 8.0 產生的 JSP 編譯類別期望回傳 Map<String, Long>。兩者介面定義不相容,導致 JSP 編譯失敗。

解決方案

移除專案中的 jetty-server-8.1.8.jar。該 Jar 通常由 JFinal 內嵌 Jetty 開發時引入,正式部署至 Tomcat 時不需也不應包含此伺服器專用庫。

避坑指南

  • 開發環境(內嵌 Jetty)與生產環境(Tomcat)的依賴隔離:使用 Maven/Gradle provided 或 test scope 管理伺服器相關依賴
  • 定期清理 WEB-INF/lib 下無用或衝突的 Jar
  • 遭遇 JSP 編譯異常優先檢查 Servlet/JSP API 版本與容器版本一致性
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved