Kettle自定義jar包供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自定義jar包供javascript使用
我們都知道 Kettle 是用 Java 語言開發,並且可以在 JavaScript 裡面直接呼叫 java 類方法。所以有些時候,我們可以自定義一些方法,來供 JavaScript 使用。 本篇文章有參考自:https://www.xiaominfo.com/2019/08/13/kettle-12/
Maven編譯自定義jar包
在實際開發過程中經常遇到需要呼叫第三方jar包的情況,這裡有兩種解決方式: 1.將第三方jar包放在lib下(之前的處理方式,不過多介紹) 2.將第三方jar包打入maven倉庫,在pom.xml加入配置即可 mvn install:install-file -
Maven本地倉庫安裝自定義JAR包
Apache Maven為專案構建提供了絕佳的解決方案,其本地倉庫中快取了遠端代理倉庫或中央倉庫中的資源,從而提高網路資源使用效率,很好很強大! 但是並非所有資源都可以根據GroupId、ArtifactId和Version資訊從中央或代理倉庫中獲取。例如Oracle資
Spring掃描自定義jar包中的Bean
在匯出jar包時:專案右鍵 -> Export -> JAR File ->在Add directory entries處打勾選中 -> finish匯出。在其它web專案中引入
eclipse匯入生成自定義jar包並匯入
今天用eclipse寫Android自定義控制元件,之前一直用的AndroidStudio,對eclipse開發Android不熟悉,導致花了很多時間才生成jar包並將其匯入測試程式執行成功,因此需要記下來,防止以後忘記。 將程式碼都寫完後,點選專案右鍵-Export,然後
maven中新增自定義jar包
引言: 在軟體專案中,Maven提供了一體化的類庫管理系統,非常實用。但是,如果新增的類庫jar在網路上無法獲取到,如何在本地按照Maven的規則新增進來呢?本文將通過一個小例子展示新增過程。 背景介紹: 一個Maven管理的Java專案,提供一個系統級別的POM
Maven自定義jar包
進入到jar包所在目錄,在此處開啟命令列視窗,使用如下maven命令就會生成maven倉庫中格式的jar包; mvn install:install-file -DgroupId=com.alipay -DartifactId=alipay-sdk-java -Dver
maven自定義jar包到本地倉庫並使用
1.首先電腦要安裝好maven環境,配置好相關環境變數2.下載或者自己打好的jar包放入倉庫某個位置,例如我要放的是test.jar 4.在jar包目錄下開啟cmd輸入: mvn install:install-file -Dfile=test.jar -DgroupId
Gradle使用mavenLocal()以及自定義jar包快取路徑
最近在嘗試使用gradle代替maven建立web專案在build.gradle檔案中,使用mavenLocal() 發現並不生效repositories { mavenLocal() //直接使用本地maven倉庫 maven { url "http://m
Android Studio生成自定義jar包
眾所周知android studio會在library所依賴的app執行或者build之後自動生成jar,路徑為build/intermediates/bundles/debug or release/classes.jar,這樣生成的jar是可以用的,但不是我們可以控制的,所以我們需要通過其他方式來解決這
Eclipse匯出包含自定義類的Jar包供Unity3D呼叫學習筆記二
在Eclipse匯出包含自定義類的Jar包供Unity3D呼叫學習筆記一 介紹了最簡單的匯出jar包的方法 現在加上一個版本號的管理,匯出帶有版本號資訊的jar包 方法很簡單,在上面匯出的最後一步的視窗中不點選Finish完成,點選Next進入下一步繼續操作 不要勾選匯出帶有
Eclipse匯出包含自定義類的Jar包供Unity3D呼叫學習筆記一
開啟Eclipse建立一個專案AndroinPlugins並標記為library專案 建立包名com.android.plugins 建立一個自定義類TestPlugins 定義一個無返回值,沒有引數的方法HelloWorld: public void HelloWorld(){
Java -cp 引入其他 jar 包導致不能引入當前目錄自定義的包
踩坑… 正在初學servlet,本來想在業務邏輯的java檔案中引入其他類,於是自定義了一個包,並在裡面聲明瞭一個類,之後在業務檔案中import 引入,然後編譯 javac -encoding utf-8 -d f:/java學習/demo3 -cp c:/t
使用fatjar來實現將包括第三方jar包的項目到處成一個jar包供其它程序使用
選中項 text sin jar dmv padding 安裝 cli itl 一、在線安裝fat jar在線安裝步驟:eclipse菜單條 help >software updates >Search for new features to install&
maven自定義jar到本地倉庫
解決 第三方 包安裝 構建 bho ins 麻煩 第三方jar包 packaging Apache Maven為項目構建提供了絕佳的解決方案,其本地倉庫中緩存了遠程代理倉庫或中央倉庫中的資源,從而提高網絡資源使用效率,很好很強大! 但是並非所有資源都可以根據GroupI
使用fpm簡單制作自定義rpm包
使用fpm簡單制作自定義rpm包yum -y install ruby rubygems ruby-devel本文出自 “silence” 博客,請務必保留此出處http://silencezone.blog.51cto.com/3613477/1935110使用fpm簡單制作自定義rpm包
在一個ros包下怎麽使用另外一個自定義ros包裏的message
com doc pack .cn .html docs ssa ace hit 假設自定義消息包my_message_package https://answers.ros.org/question/206257/catkin-use-ros-message-from-an
SoapUI調用自寫Jar包
byte cep 安裝 file -- eclipse class pub instance soapui能夠使用groovy腳本,腳本中可以調用自己編寫的jar包,使用中會遇到一些問題,下面進行一些記錄 soapui調用自寫jar包 1、編寫jar代碼並調試測試成功 2
CentOS6.5系統自定義RPM包實踐
linux rpm包管理 定制化RPM服務第1章 RPM的原理及應用1.1 RPM介紹RPM全稱是 Red Hat Package Manager(Red Hat包管理器)。幾乎所有的 Linux 發行版本都使用這種形式的軟件包管理安裝、更新和卸載軟件。RPM是一個開放的軟件包管理系統。它工作於Red
maven添加自定義jar
posit XML maven osi 放置 本機 名稱 創建 maven jar 1.搜索".m2"找到本機maven jar包的存放目錄 2.進入repository目錄,創建一個和pom.xml中的<groupId></groupId>中的內容