在Kettle上加载转换时发现缺少插件

每当我从命令行运行提取时,我都会收到此错误,而不是在Spoon UI中。

Missing plugins found while loading a transformation Step : MongoDbInput at org.pentaho.di.job.entries.trans.JobEntryTrans.getTransMeta(JobEntryTrans.java:1200) at org.pentaho.di.job.entries.trans.JobEntryTrans.execute(JobEntryTrans.java:643) at org.pentaho.di.job.Job.execute(Job.java:714) at org.pentaho.di.job.Job.execute(Job.java:856) ... 4 more Caused by: org.pentaho.di.core.exception.KettleMissingPluginsException: Missing plugins found while loading a transformation 

我的maven依赖关系如下。

   rhino js   pentaho-kettle kettle-core   pentaho-kettle kettle-engine   pentaho-library libbase 5.1.0.0-752   pentaho pentaho-big-data-plugin 5.1.0.0-751   pentaho pentaho-mongodb-plugin 5.1.0.0-751   org.mongodb mongo-java-driver 2.11.1   pentaho metastore 5.1.0.0-751   pentaho-library libformula   simple-jndi simple-jndi   org.drools drools-compiler   org.drools drools-core   org.postgresql postgresql   

我错过了什么吗?

在init kettleEnviroment之前

 KettleEnviroment.init(); 

你应该添加这样的代码

 StepPluginType.getInstance().getPluginFolders().add(new PluginFolder("your plugins path", false, true)); 

将MongoDB插件作为依赖项仅适用于编译。 当PDI运行时,它会在当前目录下查找插件/文件夹,并从那里加载所有插件。 您可以通过设置KETTLE_PLUGIN_BASE_FOLDERS系统属性来覆盖该位置。 无论哪种方式,你都需要一个插件/文件夹,并将MongoDB插件包(而不是JAR)解压缩到插件/中。 这应该在plugins /下放置一个名为pentaho-mongodb-plugin的文件夹,如果PDI指向那个插件/文件夹,它应该在运行时加载并成功使用该插件。

您必须从Kettle安装目录运行Kitchen。
正如这里所写: http : //wiki.pentaho.com/display/EAI/Kitchen+User+Documentation

在运行下面的示例之前,请确保您位于Kettle目录中。 如果将这些脚本放入批处理文件或shell脚本中,只需将更改目录添加到安装目录即可

只需编辑spoon.sh并添加即可

 OPT="$OPT -DKETTLE_PLUGIN_BASE_FOLDERS=$BASEDIR/plugins" 

就在设置OPT变量的行之后。

这实际上是来自mattyb的解决方案。 编辑spoon.sh将解决问题。

另一种解决方案是在$ {KETTLE_HOME} /.bill目录中创建一个指向plugins文件夹的符号链接。