这篇文章主要介绍了通过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". (<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 包成功!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 黑神话悟空上品鼠禁卫精魄获取方法一览|上品鼠禁卫精魄收集攻略
- 优美的旋律至真的情怀《品茶轻音乐·极品典藏Vol.1CD1》[WAV+CUE]
- 曾嵘《峥嵘岁月DSD(试音碟)》WAV+CUE
- 小提琴天碟AlfredoCampoli坎波利-贝多芬D大调小提琴协奏曲与普罗米修斯作品选FLAC
- 博主称本周游戏业内动荡无比:高价PS5 Pro、Xbox裁员等
- 米哈游也搞AI?米哈游AI大模型Glossa完成备案
- G胖变G瘦后:玩家担心其健康状况:如果他出事 游戏业将发生巨变
- 群星.1995-SUMMER.PASSION.REMIX【宝丽金】【WAV+CUE】
- 王栎鑫.2008-天生一对(EP)【种子音乐】【WAV+CUE】
- 曾淑勤.1993-金选集【点将】【WAV+CUE】
- 《命运2》新枪涉嫌抄袭Bungie响应正在调查
- 《刺客信条:影》引发争议日本预购表现低迷
- 黑神话悟空上品狸侍长精魄获取方法一览|上品狸侍长精魄收集攻略
- 大自然环保音乐系列《风花雪月》4CD/DTS[WAV分轨]
- 模拟之声慢刻CD甄妮《86精选[日本母带]》[低速原抓WAV+CUE]