农业资讯网
当前位置: 首页 农业百科

kettle javascript脚本解析对象(js脚本编写教程)

时间:2023-06-01 作者: 小编 阅读量: 1 栏目名: 农业百科

放弃不难,但坚持很酷~我们都知道Kettle是用Java语言开发,并且可以在JavaScript里面直接调用java类方法。需要将这个jar包放到kettle的lib目录下。将jar包替换到kettle的lib目录下,重启Kettle,再次通过javascripts调用自定义jar包成功!

每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。

放弃不难,但坚持很酷~

我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。

一、在 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". (<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 包成功!

    推荐阅读
  • 万词霸屏企业(万词霸屏适合什么行业)

    现如今的社会是信息产生价值的时代,网络产品更新迭代迅速,从线下销售转到线上营销的企业数不胜数,是企业发展的大趋势,但是目前网络市场鱼龙混杂,而企业没有自己的网络运营团队,导致无从下手,也有很多企业对万词霸屏系统进行咨询,那么到底那些行业更适合做霸屏推广呢?

  • 我国新能源乘用车市场现状(全国60余家新能源乘用车企业及其新能源战略盘点)

    全国60余家新能源乘用车企业及其新能源战略盘点近日,电动汽车资源网对汽车行业中涉足新能源乘用车的近60家企业进行了大盘点,以下企业的法人代表及注册资本等基本信息源于政府信息,新能源乘用车的款数以上公告的数量为准(截止到第289批《道路机动车辆生产。

  • 高血压治疗出了新指南(高血压治疗及误区)

    高血压治疗出了新指南来源:高血压治疗的根本目的是减少心脑肾以及血管并发症的出现,提高患者的生活质量,降低患者的死亡率。第一是急性期的治疗。第三是药物治疗。高血压是一种长期的疾病状态,一般是由于复杂的神经内分泌调节等因素所导致的。湘潭市第五人民医院老年病科张瑞英本文来自,仅代表作者观点。全国党媒信息公共平台提供信息发布传播服务。

  • 灭火器如何操作(灭火器怎么操作)

    接下来我们就一起去了解一下吧!灭火器如何操作一提,首先手提提把,保持水平垂直,再把灭火器瓶体上下颠倒摇晃几次,让干粉松动。二拔,拔掉灭火器保险销,在灭火器提拔下的环状金属物拔掉。三瞄,将灭火器的喷管瞄准火源,距离火焰3~5米处瞄准,一手握住喷管的最前端,控制好方向,另一只手提起灭火器提把。四压是指压住灭火器的开关,喷出干粉灭火。

  • qq电子邮件格式怎么写(qq电子邮件格式的填写方法)

    qq号码@qq.com,比如是你的qq号是12345678,则qq邮箱是12345678@qq.com;,下面我们就来说一说关于qq电子邮件格式怎么写?我们一起去了解并探讨一下这个问题吧!qq电子邮件格式怎么写qq号码@qq.com,比如是你的qq号是12345678,则qq邮箱是12345678@qq.com;英文格式,这个格式需要用户在邮箱设置里进行注册,格式为“英文@qq.com“;Foxmail格式,这个格式为“英文或数字@foxmail.com”。

  • 埃克塞特大学简介(埃克塞特大学简介介绍)

    埃克塞特大学简介埃克塞特大学,又名埃克斯特大学,是一所位于英国西南部的研究型大学,起源于十九世纪中叶,于1955年受皇家特许正式创建大学。现为英国罗素大学集团、英联邦大学协会、英国大学联盟和GW4联盟成员。学校位于英国西南部德文郡首府埃克塞特和康沃尔郡首府法尔茅斯,该地美丽的城市和海滨风光一同构成了大学优美的校园环境,被泰晤士报称为英国最美的花园式校园。学校位列2022QS世界大学排名第149名。

  • 什么品种的鸡有五个脚趾,鸡脚趾肿大是什么情况

    乌骨鸡一般有5个脚趾,前面有3个脚趾,后面有2个脚趾。如果是典型的乌骨鸡,那么它便会有丛冠、缨头、绿耳、胡须、丝毛、五爪、毛脚、乌皮、乌肉以及乌骨这10大特征,而在乌骨鸡的品种中,泰和乌骨鸡便满足了这个要求。乌骨鸡不光体型比较小,而且头部也较小,其颈部比较短,腿也比较矮,看起来较为小巧玲珑。

  • 大众途观l后排能放平吗(具体怎么操作呢)

    大众途观l后排能放平吗?以下内容大家不妨参考一二希望能帮到您!大众途观l后排能放平吗大众途观l后排能放平,具体的操作步骤如下:首先在汽车的后排,找到后背座椅的卡扣,这个卡扣是用来调节座椅放倒比例的。然后向上抬起卡扣,稍微用力就可以。然后先向前放倒左手边的座椅。

  • 热的组词(热什么意思)

    以下内容希望对你有帮助!热的组词热的组词:冷热、热心、热烈、热水、热爱、炎热、热天、热闹、闷热、热带、地热、热门、热量、燥热、酷热、热浪、热衷、郁热、热忱、白热、热乎、热度、热孝、内热、沸热、热血、热机、热切、热狗、热辣;热拼音为rè,基本含义是温度高,可引申为喧闹,热闹,情意深厚,很受人关注或欢迎的等意思。出自《素问·五常变大论》等。

  • 什么是老鼠仓(老鼠仓的解释)

    什么是老鼠仓老鼠仓是指庄家在用公有资金在拉升股价之前,先用自己个人的资金在低位建仓,待用公有资金拉升到高位后个人仓位率先卖出获利。大家都知道,中国股市的特色就是无庄不成股,而老鼠仓就存在于这些大大小小的庄股当中。这样的结果就是券商亏损累累,老鼠仓赚个钵满盆满。其实,老鼠仓就是一种财富转移的方式,是券商中某些人化公家资金为私人资金的一种方式,本质上与贪污、盗窃没有区别。