Pentaho 6 勺子错误

Posted

技术标签:

【中文标题】Pentaho 6 勺子错误【英文标题】:Pentaho 6 Spoon Error 【发布时间】:2016-09-08 10:53:02 【问题描述】:

我使用 Pentaho 6 (6.0.1.0-386)。

我的系统是 Ubuntu 14.04 LTS Linux LT0124 3.13.0-95-generic #142-Ubuntu SMP Fri Aug 12 17:00:09 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux Java版本: java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode) 我能够打开 Pentaho 并选择特定的转换。但是当我尝试执行它时,我收到以下错误:

Spoon 发生意外错误:

org.pentaho.di.trans.TransMeta.isAlwaysShowRunOptions()Z
java.lang.NoSuchMethodError: 
org.pentaho.di.trans.TransMeta.isAlwaysShowRunOptions()Z
at org.pentaho.di.ui.spoon.Spoon.executeFile(Spoon.java:8497)
at org.pentaho.di.ui.spoon.Spoon.runFile(Spoon.java:8470)
at org.pentaho.di.ui.spoon.trans.TransGraph.runTransformation(TransGraph.java:3376)
at org.pentaho.di.ui.spoon.trans.TransGraph$12.widgetSelected(TransGraph.java:1727)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at org.pentaho.di.ui.spoon.Spoon.readAndDispatch(Spoon.java:1347)
at org.pentaho.di.ui.spoon.Spoon.waitForDispose(Spoon.java:7989)
at org.pentaho.di.ui.spoon.Spoon.start(Spoon.java:9269)
at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:662)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.pentaho.commons.launcher.Launcher.main(Launcher.java:92)

你能告诉我根本原因是什么吗?

【问题讨论】:

【参考方案1】:

这是 jar 版本冲突。查看“kettle-engine-6.1-XXX.jar”,其中 6.1 是发布版本。在你的情况下应该不低于 6.0。

上面提到的方法

org.pentaho.di.trans.TransMeta.isAlwaysShowRunOptions()Z java.lang.NoSuchMethodError: 

...从 TransMeta 移动到 AbstractMeta 类,所以在旧 jar 中 TransMeta 没有这样的方法(如果移动到抽象类) - 所以旧 jar 有这样的堆栈跟踪。

Here历史

【讨论】:

您好 Dzmitry,不确定我是否了解如何解决问题。在哪里可以找到这个kettle-engine-6.1-XXX.jar 文件?我应该下载 Pentaho PDI 6.0 吗? 找到您启动 PDI 的文件夹,然后导航到文件夹 lib,然后搜索前缀为kettle-engine-XXX.jar 的 jar 并在此处发布以确保您使用正确的版本。我建议重新下载或重新安装数据集成,因为如果您有一个 jar 版本冲突,则可能还有其他版本。您是否手动更改 /lib 文件夹中的 jar? 好的,看起来我将旧的 jar 文件复制到了 lib 文件夹,因为我有新的和旧的:kettle-engine-6.0.1.0-386.jarkettle-engine-6.1.0.1-196 .jar 水壶引擎测试-6.1.0.1-196.jar 感谢您的帮助 Dzmitry! 如果你有 2 个不同版本的相同 jar,永远不知道哪一个会被 java 类加载器加载。 jar 名称末尾的 386/196 是来自 ci 作业的构建编号。那根本不是“稳定的官方”版本。如果您想在这里表示感谢,请投票。

以上是关于Pentaho 6 勺子错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pentaho 勺子中连接字符串?

你可以在 Pentaho 勺子工具中运行 jar 文件吗?

pentaho 勺子 - 更改创建的目录/文件的所有者

使用 pentaho 勺子每天更新数据库中的数据

pentaho 勺子:如何获取文件名作为值?

pentaho 勺子/PDI:如何创建具有当前日期的文件夹?