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

时间:2015-03-05 11:16:31

标签: java javascript 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;

这根本不起作用,是否有办法让它发挥作用? 也许很高兴有一种方法来查看程序运行时打印的日志。 我在运行转换时没有收到任何错误。

感谢。

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

Spoon将加载其

中存在的任何jar文件
  

数据集成\ lib中

启动时

文件夹及其子文件夹,因此如果要从自定义jar访问类,可以将jar放在此处。

所以你需要创建一个自定义jar并将jar放在

  

数据集成\ lib中

位置。

在“已修改的Java脚本值”或“用户定义的Java类步骤”中调用自定义类时,应使用完全限定名称进行调用。例如,var jar = com.everis.csv.clean.Limpieza.getInstance().getMyString();

注意:放置jar后,请务必重新启动Spoon。

如果仍然无效,请附上Pentaho.log(data-integration-server / logs / Pentaho.log)和catalina.out(data-integration-server / tomcat / logs)日志

答案 2 :(得分:1)

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