Caused by: java.lang.NoClassDefFoundError: org/scannotation/AnnotationDB
at org.pentaho.di.core.plugins.BasePluginType.findAnnotatedClassFiles...
Caused by: java.lang.ClassNotFoundException: org.scannotation.AnnotationDB
獨立運行 Kettle 轉換正常,放入 Web 應用 (Tomcat/Quartz) 即報錯。
Kettle 核心依賴 scannotation 庫掃描註解插件,**Web 類加載器隔離**導致該 Jar 未被加載。獨立運行時由 Kettle Launcher 類加載器統一加載所有依賴;Web 容器中需顯式放入 `WEB-INF/lib` 或共享類加載器路徑。
<dependency>
<groupId>org.scannotation</groupId>
<artifactId>scannotation</artifactId>
<version>1.0.3</version> <!-- 或 1.0.2 -->
</dependency>
打包 WAR 時自動進入 `WEB-INF/lib`,WebAppClassLoader 即可加載。
scannotation-1.0.3.jar (Maven Central)。Kettle 運行還需以下核心依賴(Maven 會自動傳遞):
建議直接依賴 `org.pentaho.kettle:kettle-core` 讓 Maven 遞傳解析全鏈路。
Web 應用嵌入 Kettle,**缺 Jar 是常態**。引入 `scannotation` 解決 `AnnotationDB` 找不到,再按異常堆棧補齊後續缺失 Jar,直到 `KettleEnvironment.init()` 成功。Maven 依賴管理是根治之道。