Java调用Kettle时,报Can't run transformation due to plugin missing错误

java调用kettle的转换文件,转换使用了MQTT customer进行监听数据,在spoon客户端运行正常,但是在代码里调用就报错Can't run transformation due to plugin missing
下面是完整的报错日志

2022/01/20 16:35:56 - institution_business_mqtt_consumer7311642667756461 - 为了转换解除补丁开始  [institution_business_mqtt_consumer]
2022/01/20 16:35:56 - MQTT consumer.0 - ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : Can't run transformation due to plugin missing
2022/01/20 16:35:56 - MQTT consumer.0 - ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : 错误初始化步骤[MQTT consumer]
2022/01/20 16:35:56 - institution_business_mqtt_consumer7311642667756461 - ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : 步骤 [MQTT consumer.0] 初始化失败!
org.pentaho.di.core.exception.KettleException: 
无法初始化至少一个步骤.  执行无法开始!


    at org.pentaho.di.trans.Trans.prepareExecution(Trans.java:1277)
    at org.pentaho.di.trans.Trans.execute(Trans.java:743)
    at com.jd.app.jdt.kettle.kettle.execute.TransExecute.executeTrans(TransExecute.java:77)
    at com.jd.app.jdt.kettle.kettle.execute.TransExecute.run(TransExecute.java:109)
    at com.jd.app.jdt.kettle.quartz.job.TransQuartz.execute(TransQuartz.java:100)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
2022/01/20 16:35:56 - institution_business_mqtt_consumer7311642667756461 - ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : 错误被检测到!
2022-01-20 16:35:56.489 ERROR 31068 --- [.0 (Thread-357)] org.pentaho.di.trans.Trans               : []  Can't run transformation due to plugin missing
2022-01-20 16:35:56.489 ERROR 31068 --- [.0 (Thread-357)] org.pentaho.di.trans.Trans               : []  错误初始化步骤[MQTT consumer]
2022-01-20 16:35:56.495 ERROR 31068 --- [eduler_Worker-1] c.j.a.jdt.kettle.quartz.job.TransQuartz  : 执行转换失败

org.pentaho.di.core.exception.KettleException: 
2022/01/20 16:35:56 - institution_business_mqtt_consumer7311642667756461 - 为了转换解除补丁开始  [institution_business_mqtt_consumer]
2022/01/20 16:35:56 - MQTT consumer.0 - ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : Can't run transformation due to plugin missing
2022/01/20 16:35:56 - MQTT consumer.0 - ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : 错误初始化步骤[MQTT consumer]
2022/01/20 16:35:56 - institution_business_mqtt_consumer7311642667756461 - ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : 步骤 [MQTT consumer.0] 初始化失败!


    at com.jd.app.jdt.kettle.kettle.execute.TransExecute.executeTrans(TransExecute.java:91) ~[classes/:na]
    at com.jd.app.jdt.kettle.kettle.execute.TransExecute.run(TransExecute.java:109) ~[classes/:na]
    at com.jd.app.jdt.kettle.quartz.job.TransQuartz.execute(TransQuartz.java:100) ~[classes/:na]
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [quartz-2.3.2.jar:na]
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [quartz-2.3.2.jar:na]

有找到一些解决方案,但是都没有效果
比如在初始化前指定插件路径

StepPluginType.getInstance().getPluginFolders()
                .add(new PluginFolder("F:\\tool\\waresoft\\spoon\\data-integration\\plugins",
                        false, true));
        // kettle环境初始化
        KettleEnvironment.init();

也加了系统属性

Properties properties = System.getProperties();
        if (StringUtil.hasText(com.jd.app.jdt.kettle.code.constants.KettleConfig.kettleHome)) {
            log.info("KETTLE HOME:" + com.jd.app.jdt.kettle.code.constants.KettleConfig.kettleHome);
            properties.put("KETTLE_HOME", com.jd.app.jdt.kettle.code.constants.KettleConfig.kettleHome);
        }

        if (StringUtil.hasText(com.jd.app.jdt.kettle.code.constants.KettleConfig.kettlePluginPackages)) {
            log.info("KETTLE_PLUGIN_PACKAGES:" + com.jd.app.jdt.kettle.code.constants.KettleConfig.kettlePluginPackages);
            properties.put("KETTLE_PLUGIN_PACKAGES", com.jd.app.jdt.kettle.code.constants.KettleConfig.kettlePluginPackages);
//            properties.put("KETTLE_PLUGIN_PACKAGES", FileUtil.replaceSeparator(KettleConfig.kettlePluginPackages));
        }
        if (StringUtil.hasText(com.jd.app.jdt.kettle.code.constants.KettleConfig.kettlePluginBaseFolder)) {
            log.info("KETTLE_PLUGIN_BASE_FOLDERS:" + com.jd.app.jdt.kettle.code.constants.KettleConfig.kettlePluginBaseFolder);
            properties.put("KETTLE_PLUGIN_BASE_FOLDERS", com.jd.app.jdt.kettle.code.constants.KettleConfig.kettlePluginBaseFolder);
//            properties.put("KETTLE_PLUGIN_BASE_FOLDERS", FileUtil.replaceSeparator(com.jd.app.jdt.kettle.code.constants.KettleConfig.kettlePluginBaseFolder));
            //System.setProperty("KETTLE_PLUGIN_BASE_FOLDERS", KettleConfig.kettlePluginBaseFolder);
        }

有没有使用kettle实战过的大佬路过指点一下!!!在线等!急!

阅读 4.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题