Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中运行*.ktr会引发KettleMissingPluginsException-为什么?_Java_Windows_Pentaho_Kettle - Fatal编程技术网

在Java中运行*.ktr会引发KettleMissingPluginsException-为什么?

在Java中运行*.ktr会引发KettleMissingPluginsException-为什么?,java,windows,pentaho,kettle,Java,Windows,Pentaho,Kettle,我创建了各种数据转换(*.ktr文件),当从Spoon GUI(PDI-CE 5.4.0.1-130;Windows 7)启动时,这些转换运行良好 我尝试使用以下代码从Java运行它们(接近文档中的示例代码): 执行时,我得到以下异常: org.pentaho.di.core.exception.KettleMissingPluginsException: Missing plugins found while loading a transformation Step : CsvInput

我创建了各种数据转换(*.ktr文件),当从Spoon GUI(PDI-CE 5.4.0.1-130;Windows 7)启动时,这些转换运行良好

我尝试使用以下代码从Java运行它们(接近文档中的示例代码):

执行时,我得到以下异常:

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)
org.pentaho.di.core.exception.kettlemissingpluginexception:
加载转换时发现缺少插件
步骤:CsvInput
步骤:XMLOutput
位于org.pentaho.di.trans.TransMeta.loadXML(TransMeta.java:2882)
位于org.pentaho.di.trans.TransMeta(TransMeta.java:2718)
位于org.pentaho.di.trans.TransMeta(TransMeta.java:2670)
位于org.pentaho.di.trans.TransMeta.(TransMeta.java:2647)
位于org.pentaho.di.trans.TransMeta(TransMeta.java:2627)
位于org.pentaho.di.trans.TransMeta(TransMeta.java:2592)
位于org.pentaho.di.trans.TransMeta(TransMeta.java:2555)
at(我的代码中的调用方方法)
由于我没有使用任何插件,只使用本机步骤(在本例中是CsvInput、XMLOutput),所以我不理解引发异常的原因。为什么会抛出它?如何修复要运行的代码

我是不是错过了maven依赖项?我使用以下存储库和依赖项:

<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>

五氢水壶
壶芯
5.4.0.1-130
五氢水壶
釜式发动机
5.4.0.1-130
五氢水壶
水壶
5.4.0.1-130
宾托图书馆
libformula
5.4.0.1-130

非常感谢您的回答。

我不小心使用了KetterClientEnvironment.init(),但我应该使用KetterEnvironment.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的评论和指点。

在我看来,转换步骤类是指“插件”,而您的程序实际上并没有加载它应该加载的所有类。但我不知道,我从来没见过有人这样用水壶。为什么不直接从命令行运行它呢?谢谢你的评论,lukfi。我现在在想:这些步骤作为插件的后果是什么?这些步骤的类(例如FilterRows、CsvInput等)可以在我通过Maven提供的JAR中找到?问:主要原因是我需要用运行转换的Java代码对错误/异常做出反应。我尝试了一种稍微不同的repo。这对我很有用。。你可以查一下谢谢你的评论,Rishu。我用你提到的repo+依赖项进行了尝试。错误持续:/此解决方案帮助了我
KettleEnvironment.init();
TransMeta metaData = new TransMeta("C:\\examplepath\\test.ktr");

Trans transformation = new Trans(metaData);
transformation.execute(null);
transformation.waitUntilFinished();
...