Pentaho(Spoon)のユーザ定義Javaクラスで外部jarを使用する方法

Pentaho(Spoon)の「ユーザ定義Javaクラス」では、フリーや自分の作成したライブラリを外部jarとして読み込み、使用することができます。

Javaが持っている豊富なライブラリ群を利用することが出来ると、少しの手間で様々なことができそうですよね。

Pentaho(Spoon)内で標準のjar以外を使用できるようにするには、起動時に追加のjarを読み込ませる必要があります。

Pentahoのあるディレクトリの「\data-integration\lib」配下にjarを配置すれば自動で読み込んでくれますが、それでは、どのjarを追加したかが分からなくなってしまい、

バージョンアップ時などに苦労するので、別のディレクトリに置いて読み込ませるのがよいでしょう。

そのため良くやるのは、「\data-integration\libext」というディレクトリを作成します。

さらに、Pentaho(Spoon)の起動時に読み込むライブラリ用のディレクトリは、

「\data-integration\launcher\launcher.properties」に記述がありますので、この「launcher.properties」に「:../libext」を追加します。

「:../libext」を追加するのは、下記のように、「libraries」と「classpath」になります。

main=org.pentaho.di.ui.spoon.Spoon
libraries=../test:../lib:../libswt:../libext
classpath=../classes:../:../ui:../ui/images:../lib:../libext

system-property.pentaho.installed.licenses.file=${PENTAHO_INSTALLED_LICENSE_PATH}

「launcher.properties」の記述ができたら、Pentaho(Spoon)を再起動すれば、jarが読み込まれ、下記のように「ユーザ定義Javaクラス」内で使用できます。

うまく読み込んでいない場合は、以下のようなエラーが出てしまいますので、設定をもう一度確認してみてください。

ユーザー定義Javaクラス.0 - ERROR (version 8.0.0.0-28, build 8.0.0.0-28 from 2017-11-05 07.27.50 by buildguy) : Error initializing UserDefinedJavaClass:
ユーザー定義Javaクラス.0 - ERROR (version 8.0.0.0-28, build 8.0.0.0-28 from 2017-11-05 07.27.50 by buildguy) : org.codehaus.janino.CompileException: 
Line 1, Column 8: Imported class "com.myclass.MyUtil" could not be loaded
ユーザー定義Javaクラス.0 - ERROR (version 8.0.0.0-28, build 8.0.0.0-28 from 2017-11-05 07.27.50 by buildguy) : Error initializing step [ユーザー定義Javaクラス]
Sample5Java - ERROR (version 8.0.0.0-28, build 8.0.0.0-28 from 2017-11-05 07.27.50 by buildguy) : Step [ユーザー定義Javaクラス.0] failed to initialize!
Spoon - ERROR (version 8.0.0.0-28, build 8.0.0.0-28 from 2017-11-05 07.27.50 by buildguy) : Sample5Java: preparing transformation execution failed
Spoon - ERROR (version 8.0.0.0-28, build 8.0.0.0-28 from 2017-11-05 07.27.50 by buildguy) : org.pentaho.di.core.exception.KettleException: 
Spoon - We failed to initialize at least one step.  Execution can not begin!
Spoon - 
Spoon - 
Spoon - 	at org.pentaho.di.trans.Trans.prepareExecution(Trans.java:1163)
Spoon - 	at org.pentaho.di.ui.spoon.trans.TransGraph$29.run(TransGraph.java:4202)
Spoon - 	at java.lang.Thread.run(Thread.java:745)
Sample5Java - ERROR (version 8.0.0.0-28, build 8.0.0.0-28 from 2017-11-05 07.27.50 by buildguy) : Errors detected!
Sample5Java - ERROR (version 8.0.0.0-28, build 8.0.0.0-28 from 2017-11-05 07.27.50 by buildguy) : Errors detected!