我需要从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;
这根本不起作用,是否有办法让它发挥作用? 也许很高兴有一种方法来查看程序运行时打印的日志。 我在运行转换时没有收到任何错误。
感谢。
答案 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;
}