2

我正在为 Pentaho DI / Kettle 4.4 开发一个自定义插件,并使用自定义验证和 XSLT jar 作为其中的一部分。

这些 jar 与插件的 jar 本身一起在 plugin.xml 中引用,并部署在与插件的 jar 相同的位置。

当我尝试在 Spoon GUI 中加载这个插件时,我可以看到并正常运行插件,直到我到达对外部 jar 的引用,然后我得到 ClassNotFOund 异常。

到目前为止,我已经尝试过以下操作但没有奏效:

  1. 将 expernal Jars 添加到 libext 文件夹,并期望它们会被自动拾取。- 失败的。未加载罐子。
  2. 将 -cp 命令行选项添加到 Spoon.bat 并指定 Jar 文件 - 不起作用。
  3. 打开 -verbose 选项并在输出中到处搜索,但忽略罐子。
  4. 将 Jars 部署在插件文件夹中插件的 Jar 文件旁边。- 无法识别罐子。
  5. 从插件内部,如果我动态加载(使用反射和 URL 类加载器),我可以强制加载 Jars,它可以这样工作,但我想要一个更简单的类路径修复。

  6. 我通过 XSL 扩展(XALAN-J Java 扩展)在 Jar 中引用的任何类仍然无法识别/加载,并且 XSL 在扩展调用开始时终止。

  7. 在谷歌和这个网站上搜索了类似的东西,但没有找到关于为什么 SPoon 行为如此不同并避免外部代码和内容的具体答案。
  8. 这里报告了一个类似的问题,尽管它太旧并且没有显示最终的结论性修复。我尝试了它所说的一切。http://forums.pentaho.com/archive/index.php/t-77190.html

请求某人帮助我确定丢失的内容。提前致谢,

4

1 回答 1

1

感谢这个看似不起眼的网站,它解决了所有的痛苦。

http://www.arulraj.net/2014/09/how-to-access-external-java-libraries-with-in-pentaho.html

基本上,转到启动器文件夹并编辑 launcher.properties 文件以包含任何路径、库等,它修复了我上面报告的所有问题。希望 Kettle 文档有这样的答案。

于 2014-10-02T17:00:43.667 回答