![](/img/trans.png)
[英]weird behavior when loading jar inside a jar in Java Web Start
[英]Pentaho start a java program inside the same jar
我们有一个使用Pentaho的组织报告门户。 现在要抓住的是,我们需要定义一个单个的Java Jar,其中包含Pentaho + Java文件+ sql。
我可以通过Pentaho执行SQL,但是我需要通过pentaho在同一jar中执行一个类。 这可以通过用户定义的Java类来完成。 但是怎么做呢? 如何在KTR-> UserDefinedJavaClass中直接导入Java类。
jar中的文件夹结构:
MainJar
| -testJob.kjb
| -testTransformer.ktr
| -com.mainTest.HelloWorld.class
如何从test.ktr调用HelloWorld.class?
我无法使其与“用户定义的Java类”步骤一起使用,而是改为使用Javascript步骤。 您需要先将JAR复制到pentaho / lib或/ libext文件夹。 然后,在经过修改的javascript步骤中,我刚刚调用了该类。 这是我的步骤XML
<entry>
<name>JavaScript</name>
<description />
<type>EVAL</type>
<script>
var filename=parent_job.getVariable("filename","");
var filenameClean=filename+"_clean";
package.CsvCleaner(filename,filenameClean);
</script>
<parallel>N</parallel>
<draw>Y</draw>
<nr>0</nr>
<xloc>800</xloc>
<yloc>1008</yloc>
</entry>
重要的部分是package.CsvCleaner(filename,filenameClean);
实际上使用两个参数调用类的构造函数,并且我在构造函数中添加了代码。 您还可以调用方法和内容。
我猜以类似的方式调用用户定义的Java-将jar添加到/ lib导入类并使用它。
我有一个建议。 在我看来,最好让JAR保留实际的ETL代码(并且不要通过将其添加到/ lib或/ libext使其成为pentaho的一部分),并使用shell命令执行它-类似于java -jar MyProg.jar
否则您将遇到奇怪的问题:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.