通过Kettle自定义jar包供javascript使用

作者:CREATE_17 时间:2024-04-30 09:58:10 

这篇文章主要介绍了通过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 目录下。如下图所示:

通过Kettle自定义jar包供javascript使用

三、编写 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 包结构,发现人家都是这样式的:

通过Kettle自定义jar包供javascript使用

而我刚才打的 jar 包目录是这样子的:

通过Kettle自定义jar包供javascript使用

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 文件添加后的效果图如下所示:

通过Kettle自定义jar包供javascript使用

再次打成的 jar 包内部结构为:

通过Kettle自定义jar包供javascript使用

成功!com 目录已经在 jar 包的根路径下了。

将 jar 包替换到 kettle 的 lib 目录下,重启 Kettle ,再次通过 javascripts 调用自定义 jar 包成功!

来源:https://www.cnblogs.com/createboke/p/12232680.html

标签:Kettle,自定义,jar,javascript
0
投稿

猜你喜欢

  • 详解Python为什么不用设计模式

    2022-03-30 16:17:12
  • Vue自定义指令实现弹窗拖拽四边拉伸及对角线拉伸效果

    2024-05-28 15:43:08
  • 使用python 对验证码图片进行降噪处理

    2022-01-27 23:02:16
  • Vue 自定义指令实现一键 Copy功能

    2024-05-05 09:08:48
  • sqlserver中触发器+游标操作实现

    2024-01-25 02:37:11
  • mysql data文件夹位置查找

    2024-01-15 08:20:38
  • python实现canny边缘检测

    2022-03-05 00:24:08
  • 解析:清除SQL被注入恶意病毒代码的语句

    2024-01-14 22:05:21
  • jquery判断元素是否隐藏的多种方法

    2024-04-19 10:23:51
  • MySQL左联多表查询where条件写法示例

    2024-01-14 08:44:43
  • 算法系列15天速成 第二天 七大经典排序【中】

    2022-01-10 10:10:25
  • EXEC(EXECUTE)函数访问INSERTED或DELETED的内部临时触发表

    2012-01-29 18:07:30
  • 网站制作流程及界面交互设计

    2007-10-26 12:00:00
  • 在Python 中将类对象序列化为JSON

    2023-06-11 16:41:32
  • PHP原型模式Prototype Pattern的使用介绍

    2023-05-25 01:21:04
  • python开发入门——列表生成式

    2023-03-05 03:52:21
  • JavaScript体验异步更好的解决办法

    2024-05-29 22:11:56
  • Jenkins使用publish html report插件展示HTML报告的方法

    2022-03-31 19:30:54
  • python使用ctypes库调用DLL动态链接库

    2023-12-08 14:14:05
  • ORA-28002 Oracle 11g存在密码过期问题解决方案

    2024-01-16 10:29:52
  • asp之家 网络编程 m.aspxhome.com