精华内容
下载资源
问答
  • 主要介绍了通过Kettle自定义jar包供javascript使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 我们都知道 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 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java...

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

    放弃不难,但坚持很酷~

    我们都知道 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 包成功!


     热 文 推 荐 

    ☞ HBase原理(一):架构理解

    ☞ Kafka消费者 之 指定位移消费

    ☞ 都快2020年了,ambari自定义服务集成,你还没掌握吗?文末有福利

    ☞ Ambari2.6.1集成Apache Kylin服务

    ☞ Elasticsearch 6.x 配置详解

    ☞ 看完您如果还不明白 Kerberos 原理,算我输!

    ☞ 用心整理 | Spring AOP 干货文章,图文并茂,附带 AOP 示例 ~

    ☞ Spring IOC,看完这篇文章,我才算是懂了!

    欢迎大家留言讨论

    ???? ???? ????

    你点的每个“在看”,我都认真当成了喜欢
    
    
    展开全文
  • 在使用Kettle时,如果给定的组件中不能满足我们的需求,可以使用“JavaScript脚本”组件来使用我们自定义的功能。 Kettle版本:8.0 背景:要将传入的时间字符串转换为时间戳(试了“字段选择”组件来修改元数据类型...

    在使用Kettle时,如果给定的组件中不能满足我们的需求,可以使用“JavaScript脚本”组件来使用我们自定义的功能。

    Kettle版本:8.0

    背景:要将传入的时间字符串转换为时间戳(试了“字段选择”组件来修改元数据类型,但是达不到想要的效果)
    如:传入“2019-09-05 10:14:16” ,得到结果“1567649656000”

    这里我们可以通过编写Java代码实现这个转换功能:

    package dateTrans;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    
    public class date2timestamp {
        public static Long getTimestamp(String str){
    		Long timestamp = null;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            try {
                timestamp = sdf.parse(str).getTime();
            } catch (
                    ParseException e) {
                e.printStackTrace();
            }
            return  timestamp;
        }
    }
    

    然后将这个代码打成jar包,放在kettle安装目录的lib目录下,然后重启Spoon(一定要重启

    我们在“脚本”类别中选择“JavaScript脚本”组件,打开:

    这里如何引入我们自定义的包?

    要通过new一个对象来实现,这里的Packages为固定写法,dateTrans为包名,date2timestamp为类名
    然后就可以通过这个对象来调用date2timestamp的静态方法getTimestamp了,将上一个步骤中的字段date作为参数(这里需要注意一下,这个步骤会对上一步骤中传入的每一行执行一次我们编写的转换)
    然后定义一个变量timestamp来接收结果,并作为字段传入下一步骤。(在下一步骤中通过timestamp字段就可以获取转换后的每一个时间戳)
    在这里插入图片描述

    展开全文
  • 2、测试后发现,Jar包本身没有问题,在其他项目可以正常调用,但是在kettle中无法正常获取; 3、将Jar包后缀名改成zip,进入Jar包内部看看; 4、发现我用Maven打Jar包的目录结构为下图: 但是kettl读取lib下的...

    1、出现这个异常的时候,第一想法是看看Jar包有没有问题;

    2、测试后发现,Jar包本身没有问题,在其他项目可以正常调用,但是在kettle中无法正常获取;

    3、将Jar包后缀名改成zip,进入Jar包内部看看;

    4、发现我用Maven打Jar包的目录结构为下图:

     但是kettl读取lib下的Jar包目录结构应该是

    5、现在问题好办了 ,只需把Jar包打成kettle需要的目录结构就OK了

    在项目pom.xml中,修改执行编译如下:

    <build>
    	<plugins>
    		<plugin>
    		    <groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-maven-plugin</artifactId>
    			<configuration>
    				<skip>true</skip>
    			</configuration>
    		</plugin>
    	</plugins>
    </build>

    6、再将打好的Jar包放入kettle的lib目录下,重启

    7、大功告成!

    展开全文
  • kettle调用自定义java

    千次阅读 2017-12-01 11:48:56
    kettle调用自定义java类1.kettle既然可以调用java.sql的文件,自然也可以调用自己写的类,不知道为什么,将用myeclipse生成的jar包放在libswt文件夹下,在java脚本中导入不了,最后放入lib文件夹下才成功。...
  • Kettle中调用用户自定义jar

    千次阅读 2018-05-04 15:45:02
    在使用kettle过程中,有些功能是kettle不提供的,这样就需要想办法,不过kettle中的java代码可以解决大部分问题,下边就展示使用java代码组件调用自己编写的jar包的过程1,创建java-jar包package test; import java...
  •  有时候需要对Kettle抽取过来的数据进行加解密或者其他一些自定义的操作,Kettle本身有对称加密和解密的功能,但由于有时候需要自定义,所以还是提供了调用外部接口的能力。    新建一个自定义处理的JAVA类,...
  • (2)Java脚本代码和Jar包在流程中的应用,这一块非常重要,通常情况下很多个性化的处理Kettle没有提供相关组件,就需要自己写JAVA脚本来处理,还可以引入Eclipse中开发的Jar包类库,这些都丰富了Kettle的功能。
  • 自定义Kettle数据库插件

    千次阅读 2019-03-04 16:46:12
    项目需要实现使用Kettle向神通数据库中写入数据,Kettle官方标准的数据库插件里面并没有对神通数据库的支持,因此需要自己写一个数据库插件。下面我们开始写一个数据库插件 1.在eclipse中创建一个maven项目,然后...
  • kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义功能的实现改为在eclipse等ide中...
  • 在【核心对象】-【脚本】下有个【User Defined Java Class】插件,功能很强大,允许自己在这里写java代码,其中用到了一个jar包,janino,有兴趣的自己上网去搜。janino只支持jdk 1.4,所以只能在【User Defined ...
  • 我们在Kettle实战100篇 第1篇 介绍与安装中已经介绍过Kettle...因此,为了开发JavaScript脚本方便,有时候我们需要自定义一些方法集,供我们自己在Kettle这种使用 新建项目 我们新建一个基于Maven的纯Java项目kettle...
  • Kettle自定义插件

    万次阅读 2018-09-11 18:00:13
    Kettle开发体系是基于插件的,平台自身提供接口,开发者按照规范实现接口就能进行插件的开发。在Kettle8.1的官方文档上有关于插件非常详细的介绍,如果有任何疑问可以先去官方文档查看。下面先介绍一下需要进行插件...
  • kettle整合 java代码

    2021-06-02 14:48:35
    需求: 通过kettle脚本控件调用java项目的中方法 步骤: 1 创建输入
  • Kettle连接Clickhouse 自定义插件

    千次阅读 热门讨论 2020-12-04 12:36:20
    当前环境: clickhouse 19.15.1.1 (19年的老版本ch ,还未...前期准备:搜到过类似新增JDBC的文章,包括:官网提供的自定义连接的方法 和 神通数据库的案例。 官网提示地址:https://help.pentaho.com/Documen...
  • 本下载包包括kettle集成java时候所需要的基本jar包以及将jar包打入本地仓库的脚本
  • kettle中调用java

    万次阅读 2014-10-12 21:16:32
    kettle 调用外部java类,示例说明。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 429
精华内容 171
关键字:

java自定义jarkettle

java 订阅