springboot集成kettle, 访问不到ktr文件

在尝试将Kettle的数据抽取功能集成到SpringBoot项目中时,遇到了jar包引入和文件访问的问题。首先,从Spoon客户端获取必要的jar包并添加到本地Maven库。然后,部署到Linux服务器后,Kettle无法读取ktr文件。问题在于以`java -jar`方式运行时,资源文件未解压。解决方案是将文件路径参数替换为InputStream,通过这种方式解决Kettle在不同环境下的文件访问问题。
摘要由CSDN通过智能技术生成

背景介绍

由于系统需要从sql server 远程数据库抓取数据存储到当前数据库(mysql)中,所以采用了kettle来进行数据抽取。使用spoon图形化工具进行ktr文件的编写。测试通过后,想集成进项目中,然而遇到以下问题:

  • 首先,kettle的jar包引入,在一些共有的maven库中找不到相关jar包。所以从spoon客户端中,拷贝出jar包,然后加入本地maven库。主要包括kettle-core、kettle-engine、metastore、commons-vfs2、commons-lang。
mvn install:install-file -DgroupId=pentaho-kettle 
-DartifactId=kettle-core
-Dversion=7.1.0.0-12
-Dpackaging=jar -Dfile=pentaho-kettle.jar

  • 其次,将项目部署到linux服务器后,发现kettle读不到ktr文件,查看堆栈信息,发现路径正常。
org.pentaho.di.core.exception.KettleXMLException: 
Unable to read file [file:///pws.jar!/BOOT-INF/classes!/kettle/userInfo.ktr]
Could not read from "file:///pws.jar!/BOOT-INF/classes!/kettle/userInfo.ktr" because it is a not a file.

	at org.pentaho.di.core.xml.XMLHandler.loadXMLFile(XMLHandler.java:561)
	at org.pentaho.di.core.xml.XMLHandler.loadXMLFile(XMLHandler.java:540)
	at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2742)
	at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2710)
	at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2687)
	at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2667)
	at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2632)
	at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2595)
	at cn.pioneer.pws.service.impl.KettleServiceImpl.synchronizationInfo(KettleServiceImpl.java:50)
	at cn.pioneer.pws.service.impl.KettleServiceImpl.synchroUserData(KettleServiceImpl.java:29)
	at cn.pioneer.pws.controller.KettleController.synchroUserData(KettleController.java:21)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Native
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值