1. 理解PDI/Kettle的JDK版本困境
最近在折腾PDI/Kettle 9.4.0.0-343源码编译时,遇到了一个典型问题:官方要求使用JDK11编译,但实际生产环境大多还在用JDK8。这种"编译环境"和"运行环境"版本不一致的情况,相信不少开发者都遇到过。我花了三天时间踩坑填坑,终于搞定了这个版本鸿沟问题,下面就把实战经验分享给大家。
先说说为什么会出现这个问题。从Kettle 9.3版本开始,官方就要求必须使用JDK11进行编译。这主要是因为Java生态在向前发展,新特性越来越多。但现实情况是,很多企业的生产环境仍然在使用JDK8,这就形成了一个尴尬的局面:你不得不用JDK11编译,但最终要在JDK8上运行。我最初尝试直接用JDK8编译,结果遇到了经典的无效的标记: --release错误,这就是版本不匹配的典型表现。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 搭建正确的编译环境
2.1 准备JDK11开发环境
既然官方要求JDK11,那第一步就是准备好JDK11环境。这里我推荐使用OpenJDK11,完全免费且没有商业使用限制。可以从AdoptOpenJDK官网下载,或者直接使用Oracle的OpenJDK版本。安装过程很简单:
bash复制# 下载OpenJDK11
wget https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.11+9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.11_9.tar.gz
# 解压到指定目录
tar -xzf OpenJDK11U-jdk_x64_linux_hotspot_11.0.11_9.tar.gz -C /usr/local/
安装完成后,记得配置JAVA_HOME环境变量:
bash复制export JAVA_HOME=/usr/local/jdk-11.0.11+9
export PATH=$JAVA_HOME/bin:$PATH
2.2 获取PDI/Kettle 9.4.0.0-343源码
源码可以从GitHub官方仓库获取:
bash复制wget https://github.com/pentaho/pentaho-k
