-
java kettle jar包_Kettle中调用用户自定义的jar包
2021-02-26 11:12:51Kettle 4.0版本以来已经有了Userdefined java class组件,使用户可以写Java代码 让kettle来调用,这就说明了很多kettle不能处理的东西我们可以通过Java代码来实现,步骤如下:一:创建Java Project二:导出Ja...ETL工具断断续续的也接触了 Informatica,Kettle, SSIS,个人感觉Info很强大但是也很贵,而且有着一些神秘感。Kettle 4.0版本以来已经有了User defined java class组件,使用户可以写Java代码 让kettle来调用,这就说明了很多kettle不能处理的东西我们可以通过Java代码来实现,步骤如下:
一:创建Java Project
二:导出Jar包
在main方法中测试Java Project方法无误后 ,导出为jar包,如下图所示
三:放入kettle目录lib下面
这里需要注意的是,在网上看到的都是放到 ...\pdi-ce-6.0.1.0-386\data-integration\ libext 下面,这些说的大概是老版本,本人发现在新的版本6.0中根本没有libext这个目录,只有lib目录,那就放在这里吧,结果是正确的
四:在Java Code 组件中引用
引用分为三个步骤
a : 导入import 自定义包的路径
b : new 一个方法所在的类
c : 用 a.function()的方法调用自定义类
如下图所示:
五:测试
一切就绪后,测试调用的结果,看数据库中的小写字母是不是被转换为大写字母输出了,执行结果如下图
输出结果如下图,kettle已经通过调用自定义的jar包中的function对输入的数据做了转为大写的操作,和理想的效果一样
-
kettle java脚本_「实战」Kettle自定义jar包供JavaScript使用
2020-12-03 17:51:50放弃不难,但坚持很酷~我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。本篇文章有参考自:...每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。
放弃不难,但坚持很酷~
我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。
本篇文章有参考自:https://www.xiaominfo.com/2019/08/13/kettle-12/
一、在 java 项目中创建工具类
在项目中,创建 utils 工具类,比如 计算总页码 的一个方法。代码如下:
public class PaginationUtils {
/**
* 计算得到总页码
* @param totalRecords 总记录数
* @param pageSize 分页大小
* @return 总页码
*/
public static inttotalPage(String totalRecords,String pageSize){
int totalPage=0;
try{
BigDecimal records=new BigDecimal(totalRecords);
BigDecimal size=new BigDecimal(pageSize);
BigDecimal _tmp=records.add(size).subtract(new BigDecimal(1));
BigDecimal _tp=_tmp.divide(size).setScale(0,BigDecimal.ROUND_HALF_UP);
totalPage=_tp.intValue;
}catch (Exception e){
//error
}
return totalPage;
}
}二、部署打包
工具类方法开发完毕后,可通过
mvn clean package -DskipTests
命令进行打包,在 target 目录下,会生成一个 jar 文件。需要将这个 jar 包放到 kettle 的 lib 目录下。如下图所示:三、编写 JavaScript 脚本
重启 Kettle ,新建 JavaScript 脚本,计算总页码的 js 代码如下所示:
//计算总页码
var totalPage=com.study.spring.Utils.PaginationUtils.totalPage(countBySql,pageSize);其实就是在 js 代码中声明 java 类+方法。
但是问题来了,kettle 在运行这段 JavaScript 脚本的时候,提示下面这样的错误:
不能编译 javascript: org.mozilla.javascript.EcmaError: TypeError: Cannot call property totalPage in object [JavaPackage com.study.spring.Utils.PaginationUtils]. It is not a function, it is "object". (#22)
根据错误信息来看,其实还是没有找到相关类方法,和没放这个 jar 包一样…
四、FAQ
上面这个错误究竟是怎么回事呢?我也很奇怪。于是我就用压缩工具也看了看 lib 目录下的其它 jar 包结构,发现人家都是这样式的:
而我刚才打的 jar 包目录是这样子的:
com 目录并没有在 jar 包的根路径下,自然是访问不到那个方法。
好,问题产生的原因找到了,然后再说一下解决办法:
在 pom.xml 文件中添加:
org.springframework.boot
spring-boot-maven-plugintruepom 文件添加后的效果图如下所示:
再次打成的 jar 包内部结构为:
成功!com 目录已经在 jar 包的根路径下了。
将 jar 包替换到 kettle 的 lib 目录下,重启 Kettle ,再次通过 javascripts 调用自定义 jar 包成功!
-
通过Kettle自定义jar包供javascript使用
2020-11-20 22:39:52这篇文章主要介绍了通过Kettle自定义jar包供javascript使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们都知道 Kettle 是用 Java 语言开发,并且可以在... -
js脚本获取日期 kettle_通过Kettle自定义jar包供javascript使用
2020-12-30 07:03:07这篇文章主要介绍了通过Kettle自定义jar包供javascript使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下我们都知道 Kettle 是用 Java 语言开发,并且可以在 ...这篇文章主要介绍了通过Kettle自定义jar包供javascript使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。
一、在 java 项目中创建工具类
在项目中,创建 utils 工具类,比如 计算总页码 的一个方法。代码如下:
public class PaginationUtils {
/**
* 计算得到总页码
* @param totalRecords 总记录数
* @param pageSize 分页大小
* @return 总页码
*/
public static int totalPage(String totalRecords,String pageSize){
int totalPage=0;
try{
BigDecimal records=new BigDecimal(totalRecords);
BigDecimal size=new BigDecimal(pageSize);
BigDecimal _tmp=records.add(size).subtract(new BigDecimal(1));
BigDecimal _tp=_tmp.divide(size).setScale(0,BigDecimal.ROUND_HALF_UP);
totalPage=_tp.intValue();
}catch (Exception e){
//error
}
return totalPage;
}
}
二、部署打包
工具类方法开发完毕后,可通过 mvn clean package -DskipTests 命令进行打包,在 target 目录下,会生成一个 jar 文件。需要将这个 jar 包放到 kettle 的 lib 目录下。如下图所示:
三、编写 JavaScript 脚本
重启 Kettle ,新建 JavaScript 脚本,计算总页码的 js 代码如下所示:
//计算总页码
var totalPage=com.study.spring.Utils.PaginationUtils.totalPage(countBySql,pageSize);
其实就是在 js 代码中声明 java 类+方法。
但是问题来了,kettle 在运行这段 JavaScript 脚本的时候,提示下面这样的错误:
不能编译 javascript: org.mozilla.javascript.EcmaError: TypeError: Cannot call property totalPage in object [JavaPackage com.study.spring.Utils.PaginationUtils]. It is not a function, it is "object". (#22)
根据错误信息来看,其实还是没有找到相关类方法,和没放这个 jar 包一样...
四、FAQ
上面这个错误究竟是怎么回事呢?我也很奇怪。于是我就用压缩工具也看了看 lib 目录下的其它 jar 包结构,发现人家都是这样式的:
而我刚才打的 jar 包目录是这样子的:
com 目录并没有在 jar 包的根路径下,自然是访问不到那个方法。
好,问题产生的原因找到了,然后再说一下解决办法:
在 pom.xml 文件中添加:
org.springframework.boot
spring-boot-maven-plugin
true
pom 文件添加后的效果图如下所示:
再次打成的 jar 包内部结构为:
成功!com 目录已经在 jar 包的根路径下了。
将 jar 包替换到 kettle 的 lib 目录下,重启 Kettle ,再次通过 javascripts 调用自定义 jar 包成功!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
-
kettle使用_Kettle自定义jar包供javascript使用
2020-12-03 18:00:45我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。 本篇文章有参考自:...我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。
本篇文章有参考自:https://www.xiaominfo.com/2019/08/13/kettle-12/一、在 java 项目中创建工具类
在项目中,创建 utils 工具类,比如 计算总页码 的一个方法。代码如下:
public class PaginationUtils { /** * 计算得到总页码 * @param totalRecords 总记录数 * @param pageSize 分页大小 * @return 总页码 */ public static int totalPage(String totalRecords,String pageSize){ int totalPage=0; try{ BigDecimal records=new BigDecimal(totalRecords); BigDecimal size=new BigDecimal(pageSize); BigDecimal _tmp=records.add(size).subtract(new BigDecimal(1)); BigDecimal _tp=_tmp.divide(size).setScale(0,BigDecimal.ROUND_HALF_UP); totalPage=_tp.intValue(); }catch (Exception e){ //error } return totalPage; } }
二、部署打包
工具类方法开发完毕后,可通过
mvn clean package -DskipTests
命令进行打包,在 target 目录下,会生成一个 jar 文件。需要将这个 jar 包放到 kettle 的 lib 目录下。如下图所示:三、编写 JavaScript 脚本
重启 Kettle ,新建 JavaScript 脚本,计算总页码的 js 代码如下所示:
//计算总页码 var totalPage=com.study.spring.Utils.PaginationUtils.totalPage(countBySql,pageSize);
其实就是在 js 代码中声明 java 类+方法。
但是问题来了,kettle 在运行这段 JavaScript 脚本的时候,提示下面这样的错误:
不能编译 javascript: org.mozilla.javascript.EcmaError: TypeError: Cannot call property totalPage in object [JavaPackage com.study.spring.Utils.PaginationUtils]. It is not a function, it is "object". (<cmd>#22)
根据错误信息来看,其实还是没有找到相关类方法,和没放这个 jar 包一样...
四、FAQ
上面这个错误究竟是怎么回事呢?我也很奇怪。于是我就用压缩工具也看了看 lib 目录下的其它 jar 包结构,发现人家都是这样式的:
而我刚才打的 jar 包目录是这样子的:
com 目录并没有在 jar 包的根路径下,自然是访问不到那个方法。
好,问题产生的原因找到了,然后再说一下解决办法:
在 pom.xml 文件中添加:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build>
pom 文件添加后的效果图如下所示:
再次打成的 jar 包内部结构为:
成功!com 目录已经在 jar 包的根路径下了。
将 jar 包替换到 kettle 的 lib 目录下,重启 Kettle ,再次通过 javascripts 调用自定义 jar 包成功!
-
Kettle自定义jar包供javascript使用
2020-01-25 16:30:35我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。 本篇文章有参考自:... -
【实战】Kettle自定义jar包供JavaScript使用
2020-01-06 23:48:27每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。放弃不难,但坚持很酷~我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java... -
将jar添加到发布目录_「实战」Kettle自定义jar包供JavaScript使用
2021-01-12 05:26:21放弃不难,但坚持很酷~我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。本篇文章有参考自:... -
Kettle中的“JavaScript脚本”组件如何使用自定义jar
2019-09-05 10:18:20在使用Kettle时,如果给定的组件中不能满足我们的需求,可以使用“JavaScript脚本”组件来使用我们自定义的功能。 Kettle版本:8.0 背景:要将传入的时间字符串转换为时间戳(试了“字段选择”组件来修改元数据类型... -
Kettle中调用用户自定义的jar包
2016-05-04 15:36:00Kettle中调用用户自定义的jar包 ETL工具断断续续的也接触了 Informatica,Kettle, SSIS,个人感觉Info很强大但是也很贵,而且有着一些神秘感。Kettle 4.0版本以来已经有了Userdefined java class组件... -
kettle调用自定义java类
2017-12-01 11:48:56kettle调用自定义java类1.kettle既然可以调用java.sql的文件,自然也可以调用自己写的类,不知道为什么,将用myeclipse生成的jar包放在libswt文件夹下,在java脚本中导入不了,最后放入lib文件夹下才成功。... -
kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件
2016-08-15 08:56:00该kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义功能的实现改为在eclipse等ide中... -
kettle的自定义java类控件User Defined Java Class
2014-05-25 18:50:36在【核心对象】-【脚本】下有个【User Defined Java Class】插件,功能很强大,允许自己在这里写java代码,其中用到了一个jar包,janino,有兴趣的自己上网去搜。janino只支持jdk 1.4,所以只能在【User Defined ... -
Kettle变量和自定义java代码的实例应用
2015-07-14 14:23:17(2)Java脚本代码和Jar包在流程中的应用,这一块非常重要,通常情况下很多个性化的处理Kettle没有提供相关组件,就需要自己写JAVA脚本来处理,还可以引入Eclipse中开发的Jar包类库,这些都丰富了Kettle的功能。 -
kettle 使用java脚本连接获取数据库中的值
2018-07-09 17:25:46思路:在kettle中通过设置自定义常数来获取java脚本的值,在kettle的libswt\win64目录下放入用到的含有java.sql中的类的jar包rt.jar, 在 java脚本中像正常java一样写代码连接数据库。可惜这样查询到的结果会将之前... -
Kettle--java代码组件实现密码加密(BCryptPasswordEncoder)
2021-01-14 18:52:46前提 通过kettle同步用户账号数据,需要用身份证后六位做...通过查阅相关资料,java片段可以使用jdk的所有类,但是如果是自定义的类则需要将类打入到jar包中,然后放到kettle的lib下,再在java片段中引入该类。但是因为 -
kettle.plugin=E:\zhaxiaodong\plugins //kettle插件目录,可以自定义一个目录,然后将data-integration\plugins目录下所需的插件拷贝到此目录下 kettle.script=Html\js\libs\url //kettle所用到的js文件,目前未...
-
自定义步骤插件-案例
2020-01-13 17:40:02简要 意图:实现一个实时拉取数据处理kafka消费步骤 自定义步骤如下: ...再者Kettle工作目录里已经有完备的jar包。所以从工作目录data-integration\lib下,拷贝以下jar包到工程中,做好依赖配置 最终工... -
kettle连接mysql8.0以上版本
2020-03-15 16:20:131、下载mysql8.0的jar驱动 https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.19 2、将下载好的mysql的驱动放到kettle安装文件中的lib下面,然后重启Spoon 3、连接的两种方式 第一种方式:数据库... -
kettle 连接mysql8.x数据库,发生access denied for"账户"错误等问题
2020-03-24 11:02:051、下载mysql-connector-java-8.0.x.jar,放到kettle的 data-integration\lib目录下,并重启kettle程序。 2、对于 8.x 版本的 MySQL,jdbc 连接驱动方式有所变化,不能使用现有的 MySQL 连接配置方式,需要使用自定义... -
KETTLE案例-结合JavaScript使用
2020-08-20 16:40:46数据库需要下载相应驱动:mysql5,选择了其中一个mysql-connector-java-5.1.26-bin.jar 放在pdi-ce-8.2.0.0-342\data-integration\lib文件夹下即可,有很多文章要求放在pdi-ce-8.2.0.0-342\data-integration\libswt\...
-
‘tf2_ros::TransformListener::TransformListener(tf2::BufferCore&, ros::NodeHandle const&, bool)’未定义..
-
jdk8u281.zip
-
华为1+X认证——网络系统建设与运维(初级)
-
智慧校园建设方案.ppt
-
MaxScale 实现 MySQL 读写分离与负载均衡
-
19年实务真题下午.pdf
-
JDK动态代理:不仅要学会用,更要掌握其原理
-
最新中文停用词.txt
-
【爱码农】C#制作MDI文本编辑器
-
牛牛量化策略交易
-
redis608.zip
-
PHP超全局变量
-
计算机常见复试问题.pdf
-
2021年 系统架构设计师 系列课
-
php数组函数大全
-
项目经理成长之路
-
Reliability Engineering_ Theory and Practice-.pdf
-
马士兵老师spring框架学习笔记
-
网上订餐系统 javaweb项目 (完整源码)
-
包头鱼与鲇鱼数据集.txt