![](/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.