Top > Blog Index > Javaから直接FOP(Apache FOP)を使う

Javaから直接FOP(Apache FOP)を使う

Apache FOP は普通コマンドラインから使いますが、 FOPはJavaで記述されているため、直接Javaから使うことができます。

groovy から使いたかったのだが、

Caught: java.lang.LinkageError: loader constraint violation: loader (instance of ) previously initiated loading for a different type with name "org/w3c/dom/NodeList"

というエラーが出てしまう。

org/w3c/dom 関係のクラスは、groovy に含まれていると思われるが、 fop関係で依存している jar , batik-all-1.7.jar にも含まれている。 ... ということは、batik-all-1.7.jar から org/w3c/dom 関係のクラスを 除去すれば問題なくうごくのではないか...

apache batik をダウンロードして依存jarを調べたら NodeList クラスは xml-apis.jar に含まれていた.

コード

ここでは test.fo を r.png に変換してみます。

依存する jar たちを ( fop/lib/*jar と fop/build/fop.jar です )を クラスパスに通しましょう。