部署 jBPM 4.0 至 Tomcat 6.0 時,啟動拋出異常:
have different Class objects for the type javax/el/ExpressionFactory used in the signature
Tomcat 6.0 內建 el-api.jar(javax.el.*),而 jBPM 4 依賴 JUEL 實現(juel.jar、juel-impl.jar、juel-api.jar)。兩套 ExpressionFactory 實現由不同 ClassLoader 載入,導致類身份不一致,觸發 LinkageError。
$CATALINA_HOME/lib/el-api.jar。juel.jar、juel-impl.jar、juel-api.jar)複製至 $CATALINA_HOME/lib/。重啟 Tomcat,jBPM 4 進程引擎正常啟動,JUEL 表達式解析無誤。
⚠️ 注意:此操作影響 Tomcat 全域 EL 實現,若同容器部署其他依賴標準 EL API 的應用,需充分測試相容性。生產環境建議升級至 Tomcat 7+(內建 JUEL)或遷移至 WildFly/JBoss EAP 等支援 JUEL 的 Java EE 容器。