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

Java 在Ketter上加载转换时发现缺少插件,java,maven,pentaho,data-integration,Java,Maven,Pentaho,Data Integration,每当我从命令行而不是用户界面运行提取时,我都会收到此错误 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.JobEnt

每当我从命令行而不是用户界面运行提取时,我都会收到此错误

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依赖项如下所示

    <dependency>
      <groupId>rhino</groupId>
      <artifactId>js</artifactId>
    </dependency>
    <dependency>
      <groupId>pentaho-kettle</groupId>
      <artifactId>kettle-core</artifactId>
    </dependency>
    <dependency>
      <groupId>pentaho-kettle</groupId>
      <artifactId>kettle-engine</artifactId>
    </dependency>
    <dependency>
      <groupId>pentaho-library</groupId>
      <artifactId>libbase</artifactId>
      <version>5.1.0.0-752</version>
    </dependency>
    <dependency>
      <groupId>pentaho</groupId>
      <artifactId>pentaho-big-data-plugin</artifactId>
      <version>5.1.0.0-751</version>
    </dependency>
    <dependency>
      <groupId>pentaho</groupId>
      <artifactId>pentaho-mongodb-plugin</artifactId>
      <version>5.1.0.0-751</version>
    </dependency>
    <dependency>
      <groupId>org.mongodb</groupId>
      <artifactId>mongo-java-driver</artifactId>
      <version>2.11.1</version>
    </dependency>
    <dependency>
      <groupId>pentaho</groupId>
      <artifactId>metastore</artifactId>
      <version>5.1.0.0-751</version>
    </dependency>
    <dependency>
      <groupId>pentaho-library</groupId>
      <artifactId>libformula</artifactId>
    </dependency>
    <dependency>
      <groupId>simple-jndi</groupId>
      <artifactId>simple-jndi</artifactId>
    </dependency>
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-compiler</artifactId>
    </dependency>
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
    </dependency>
  </dependencies>

犀牛
js
五氢水壶
壶芯
五氢水壶
釜式发动机
宾托图书馆
libbase
5.1.0.0-752
宾塔霍
pentaho大数据插件
5.1.0.0-751
宾塔霍
pentaho mongodb插件
5.1.0.0-751
org.mongodb
mongo java驱动程序
2.11.1
宾塔霍
元存储
5.1.0.0-751
宾托图书馆
libformula
简单jndi
简单jndi
org.drools
drools编译器
org.drools
流涎核
org.postgresql
postgresql

我遗漏了什么吗?

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

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

您必须从Kettle安装目录运行Kitchen。
如文所述:

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


您必须从Kettle安装目录运行Kitchen。
如文所述:

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


初始环境之前

KettleEnviroment.init();
您应该像这样添加此代码

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

初始环境之前

KettleEnviroment.init();
您应该像这样添加此代码

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

只需编辑spoon.sh并添加

OPT="$OPT -DKETTLE_PLUGIN_BASE_FOLDERS=$BASEDIR/plugins"
就在设置OPT变量的行之后

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


另一个解决方案是在${KETTLE\u HOME}/.KETTLE目录中创建一个指向插件文件夹的符号链接。

只需编辑spoon.sh并添加

OPT="$OPT -DKETTLE_PLUGIN_BASE_FOLDERS=$BASEDIR/plugins"
就在设置OPT变量的行之后

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


另一个解决方案是在${KETTLE\u HOME}/.KETTLE目录中创建一个指向插件文件夹的符号链接。

在cassandra(cassandrainput步骤)中,它们在PDI 5.1中是一个问题,所以不确定mongodb中是否也存在此类问题。@WorkingHard。。建议的解决方案是什么?更改PDI版本,使用任何其他版本。我不确定mongo的情况,但在cassandra,你必须避免这个版本。@WorkingHard。。这是否意味着我需要改变整个版本的水壶?到5.2?是的,您可以更改并尝试..在cassandra(cassandrainput步骤)中,他们在PDI 5.1中存在问题,因此不确定mongodb中是否也存在此类问题。@WorkingHard。。建议的解决方案是什么?更改PDI版本,使用任何其他版本。我不确定mongo的情况,但在cassandra,你必须避免这个版本。@WorkingHard。。这是否意味着我需要改变整个版本的水壶?到5.2?是的,你可以改变并尝试…没有其他方法吗?web应用程序正在运行整个转换。web应用程序依赖项由maven指定。是否有任何方法可以使转换变得专业化?是否还有其他方法?web应用程序正在运行整个转换。web应用程序依赖项由maven指定。是否有任何方法可以使转换变得专业化?没有任何方法可以使整个过程专业化?非常好,非常有用,谢谢。如果你不使用插件,你可以在任何地方运行kitchen.sh,但是一旦你使用了插件,你就必须先将cd刻录到kitchen文件夹中。谁知道呢!没有办法让整个过程变得简单?非常好非常有用谢谢。如果你不使用插件,你可以在任何地方运行kitchen.sh,但是一旦你使用了插件,你就必须先将cd刻录到kitchen文件夹中。谁知道呢!