繁体   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