0

Pentaho Data Integration 8.0.x 使用 2010 年发布的 Janino 2.5.16 来编译用户定义的 Java 类步骤。pentaho 中有一个JIRA用于更新它以使用更新的 Janino 版本,这将在 pentaho v8.2.0 GA 中带来新的 java 8 相关功能。但没有关于何时发布的信息。

有没有其他方法可以使用更新的 janino 版本(janino-3.0.8.jar)和 UDJC 的退出 pentaho?我尝试在 lib 中复制更新的 jar 并添加 commons-compiler-3.0.8.jar 来满足依赖关系。现在,当我打开 Spoon 时,出现以下错误:

错误图像

请告知如何实现这一点。我知道仅仅更换罐子可能还不够,但如果可以做其他事情就想要。

4

1 回答 1

1

这并不容易。即使是现在,由于您获得了 ClassNotFound,janino 的公共 api 已更改。一些类被删除了一些被改变了。更新它的实际需要是什么?

如果您需要非常复杂的业务逻辑,请创建自定义插件。文档和教程可用,您可以查看当前内置插件的源代码(源代码可在 github 上找到)。

janino 有哪些重要的新版本,而旧版本没有(除了 java8 支持)?检查kettle引擎,查看UserDefinedClass步骤的来源,更改代码以支持新的janino版本,测试并制作自己的pdikettle,并尝试向存储库的维护者发送推送请求。

任何一个都相当复杂,这个插件是内置在引擎中的,你必须自己构建。自建意味着,你必须自己支持它。这不是微不足道的,项目很大,现在甚至更大并继续发展,我花了几天时间制作我的第一个自定义版本(版本 4,在 ivy 中)只是为了更好地了解和调试复杂的案例,它从未使用过在生产中。

存储库的维护者必须有充分的理由将您的更改包含到流中,它必须经过良好的测试,而且过程很长,而且很可能不值得。自 2010 年以来发生了很多变化,我可能在发行说明中看到,新版本的 java 已经具备在运行时编译的能力。

我的建议是让你自己的插件。

于 2018-10-16T10:36:08.073 回答