解决java调用kettle,JSON input 缺少依赖问题

解决java调用kettle,JSON input 缺少依赖问题

问题描述

我用kettle工具创建了一个转换文件.ktr,其中包含一个json input组件, 本地执行ktr文件能正常转换数据。当使用java代码调用ktr文件时报错:Can’t run transformation due to plugin missing

本地调用的解决方案

百度得到的解决办法基本差不多,在初始化代码KettleEnvironment.init();前增加一行引入依赖的代码:
StepPluginType.getInstance().getPluginFolders().
add(new PluginFolder(“D:\Program Files (x86)\kettle\data-integration\plugins\kettle-json-plugin”, false, true));

“D:\Program Files (x86)\kettle\data-integration\plugins\kettle-json-plugin”,这个路径为我电脑上缺失的json input依赖路径,如果是缺失其它依赖也可依照此方式解决。依赖地址可以到kettle安装路径的plugins文件夹下寻找。

如果只是止步于本地调试,上面的方法已经解决问题了。但如果要将代码打包并部署到服务器上,就有可能遇到下面的问题了。

部署到服务器上的解决方案

我是沿用本地调用方案,只是替换掉本地路径。
将整个json input的依赖文件夹kettle-json-plugin,放在项目resource目录下,通过this.getClass().getClassLoader().getResource()方式拿到kettle-json-plugin的路径,经测试仍然报错。打包上传到服务器测试一样报错。

然后发现只要依赖文件夹kettle-json-plugin处于classes文件夹下,就会报错。急于解决该问题,就用了比较简单粗暴的方式,将文件夹kettle-json-plugin直接复制到打好的war包下:放在classes外面
在这里插入图片描述
然后将路径直接写死到wabapps/项目下,再测试就OK了。

当然感觉这不是很好的解决方式,期待网友给出更好的解决方案。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值