簡體   English   中英

在Spoon(Pentaho Kettle)中執行.jar文件

[英]Execute .jar file in Spoon (Pentaho Kettle)

我需要從Spoon執行一個Java jar文件。

該程序只有一個類,我想要的就是在有或沒有參數的情況下運行它。

該類名為“ Limpieza”,位於名為:

com.overflow.csv.clean

我已將jar部署到:

C:\\ Program Files(x86)\\ Kettle \\ data-integration \\ lib

在修改的JavaScriptValue步驟中,我這樣稱呼它:

var jar = com.everis.csv.clean.Limpieza;

這根本不起作用,是否有辦法使它起作用? 如果有一種方法可以在程序運行時查看程序打印的日志,這也很好。 運行轉換時沒有出現任何錯誤。

謝謝。

Spoon將加載其中存在的所有jar文件

數據集成\\ LIB

文件夾及其啟動時的子文件夾,因此,如果要從自定義jar訪問類,可以將jar放在此處。

因此,您需要創建一個自定義的jar並將其放入

數據集成\\ LIB

位置。

在“修改的Java腳本值”或“用戶定義的Java類步驟”中調用自定義類時,應使用完全限定的名稱進行調用。 例如
var jar = com.everis.csv.clean.Limpieza.getInstance().getMyString();

注意:放置廣口瓶后,請確保重新啟動Spoon。

如果仍然無法正常工作,請附加Pentaho.log(data-integration-server / logs / Pentaho.log)和catalina.out(data-integration-server / tomcat / logs)日志

答案是創建一個用戶定義的Java類(遵循Rishu指出的指南),這是我的工作代碼:

import java.util.*;
import com.everis.csv.Cleaner;

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
    Cleaner c = new Cleaner();
    c.clean();
    // The rest of it is for making it work
    // You will also need to make a Generate Rows step that inputs a row to this step. 
    Object[] r = getRow();

    if (r == null) {
        setOutputDone();
        return false;
    } 
    r = createOutputRow(r, data.outputRowMeta.size());
    putRow(data.outputRowMeta, r);

    return true;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM