运行 Java 中的 *.ktr 抛出 KettleMissingPluginsException - 为什么?
Running *.ktr in Java throws KettleMissingPluginsException - Why?
我创建了各种数据转换(*.ktr 文件),当从 Spoon GUI (PDI-CE 5.4.0.1-130; Windows 7) 启动时 运行 非常完美。
我尝试使用以下代码(接近文档中的示例代码)从 Java 运行 它们:
KettleClientEnvironment.init();
TransMeta metaData = new TransMeta("C:\examplepath\test.ktr");
Trans transformation = new Trans(metaData);
transformation.execute(null);
transformation.waitUntilFinished();
...
执行时,出现以下异常:
org.pentaho.di.core.exception.KettleMissingPluginsException:
Missing plugins found while loading a transformation
Step : CsvInput
Step : XMLOutput
at org.pentaho.di.trans.TransMeta.loadXML(TransMeta.java:2882)
at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2718)
at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2670)
at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2647)
at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2627)
at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2592)
at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2555)
at (caller method in my code)
由于我没有使用任何插件,只使用了原生步骤(在本例中为 CsvInput、XMLOutput),我不明白抛出异常的原因。为什么抛出它以及如何将代码修复为 运行?
我可能缺少 maven 依赖项吗?我使用以下存储库 http://repository.pentaho.org/content/groups/omni/ 和依赖项:
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-core</artifactId>
<version>5.4.0.1-130</version>
</dependency>
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-engine</artifactId>
<version>5.4.0.1-130</version>
</dependency>
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-ui-swt</artifactId>
<version>5.4.0.1-130</version>
</dependency>
<dependency>
<groupId>pentaho-library</groupId>
<artifactId>libformula</artifactId>
<version>5.4.0.1-130</version>
</dependency>
非常感谢您的回答。
我不小心使用了 KettleClientEnvironment.init() 但我应该使用 KettleEnvironment.init()。因此,环境未正确初始化而触发了异常。哇。这是菜鸟犯的错误:)
更正后的代码,也可以在 Kettle 文档和 Rishu 的示例中找到:
KettleEnvironment.init();
TransMeta metaData = new TransMeta("C:\examplepath\test.ktr");
Trans transformation = new Trans(metaData);
transformation.execute(null);
transformation.waitUntilFinished();
...
感谢 lufki 和 Rishu 的评论和指点。
我创建了各种数据转换(*.ktr 文件),当从 Spoon GUI (PDI-CE 5.4.0.1-130; Windows 7) 启动时 运行 非常完美。
我尝试使用以下代码(接近文档中的示例代码)从 Java 运行 它们:
KettleClientEnvironment.init();
TransMeta metaData = new TransMeta("C:\examplepath\test.ktr");
Trans transformation = new Trans(metaData);
transformation.execute(null);
transformation.waitUntilFinished();
...
执行时,出现以下异常:
org.pentaho.di.core.exception.KettleMissingPluginsException:
Missing plugins found while loading a transformation
Step : CsvInput
Step : XMLOutput
at org.pentaho.di.trans.TransMeta.loadXML(TransMeta.java:2882)
at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2718)
at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2670)
at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2647)
at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2627)
at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2592)
at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2555)
at (caller method in my code)
由于我没有使用任何插件,只使用了原生步骤(在本例中为 CsvInput、XMLOutput),我不明白抛出异常的原因。为什么抛出它以及如何将代码修复为 运行?
我可能缺少 maven 依赖项吗?我使用以下存储库 http://repository.pentaho.org/content/groups/omni/ 和依赖项:
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-core</artifactId>
<version>5.4.0.1-130</version>
</dependency>
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-engine</artifactId>
<version>5.4.0.1-130</version>
</dependency>
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-ui-swt</artifactId>
<version>5.4.0.1-130</version>
</dependency>
<dependency>
<groupId>pentaho-library</groupId>
<artifactId>libformula</artifactId>
<version>5.4.0.1-130</version>
</dependency>
非常感谢您的回答。
我不小心使用了 KettleClientEnvironment.init() 但我应该使用 KettleEnvironment.init()。因此,环境未正确初始化而触发了异常。哇。这是菜鸟犯的错误:)
更正后的代码,也可以在 Kettle 文档和 Rishu 的示例中找到:
KettleEnvironment.init();
TransMeta metaData = new TransMeta("C:\examplepath\test.ktr");
Trans transformation = new Trans(metaData);
transformation.execute(null);
transformation.waitUntilFinished();
...
感谢 lufki 和 Rishu 的评论和指点。