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

Execute .jar file in Spoon (Pentaho Kettle)

我需要从 Spoon 执行一个 java jar 文件。

程序只有一个class,我只想运行带参数或不带参数。

class 名为 "Limpieza",位于名为

的包内

com.overflow.csv.clean

我已将 jar 部署到:

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

从 Modified JavaScriptValue 步骤开始,我这样称呼它:

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

这根本不起作用,有没有办法让它起作用? 如果有一种方法可以在程序 运行 时查看程序打印的日志,那就太好了。 运行 转换时我没有收到任何错误。

谢谢。

Spoon 将加载其

中存在的所有 jar 文件

data-integration\lib

启动期间的文件夹及其子文件夹,因此如果您想从自定义 jar 访问 classes,您可以将 jar 放在这里。

因此您需要创建一个自定义 jar 并将该 jar 放入

data-integration\lib

位置。

在 "Modified Java Script Value" 或 "User Defined Java Class step" 中调用自定义 class 时,您应该使用完全限定名称进行调用。例如
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) logs

查看下面的博客:

https://anotherreeshu.wordpress.com/2015/02/07/using-external-jars-import-in-pentaho-data-integration/

希望这可能有所帮助:)

答案是创建一个用户定义的 Java Class(按照 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;
}