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


Posted in Javascript onJanuary 29, 2020

这篇文章主要介绍了通过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 包成功!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery不使用插件及swf实现无刷新文件上传
Dec 08 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
Mar 13 Javascript
JavaScript里四舍五入函数round用法实例
Apr 06 Javascript
有关jQuery中parent()和siblings()的小问题
Jun 01 Javascript
js实现图片左右滚动效果
Feb 27 Javascript
分享vue.js devtools遇到一系列问题
Oct 24 Javascript
利用vue + element实现表格分页和前端搜索的方法
Dec 25 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
Jun 19 Javascript
js实现一个页面多个倒计时的3种方法
Feb 25 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
May 23 Javascript
微信小程序HTTP请求从0到1封装
Sep 09 Javascript
js实现左右轮播图
Jan 09 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
Dec 24 #Javascript
vue引用外部JS的两种种方法
Jan 28 #Javascript
Java Varargs 可变参数用法详解
Jan 28 #Javascript
关于引入vue.js 文件的知识点总结
Jan 28 #Javascript
JS简单表单验证功能完整示例
Jan 26 #Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
Jan 26 #Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
Jan 26 #Javascript
You might like
PHP的autoload机制的实现解析
2012/09/15 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
PHP实现字母数字混合验证码功能
2019/07/11 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
phpwind放自动注册方法
2006/12/02 Javascript
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
前端性能优化及技巧
2016/05/06 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
2016/07/22 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
python入门前的第一课 python怎样入门
2018/03/06 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
python实现Pyecharts实现动态地图(Map、Geo)
2020/03/25 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
美国医生配方营养补充剂供应商:Healthy Directions
2019/07/10 全球购物
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
综合素质评价个性发展自我评价
2015/03/06 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
mysql数据库实现设置字段长度
2022/06/10 MySQL