Fessは依存しているJarファイルに含まれているクラスが重複しているかどうかをチェックしているだけど、JavaBeans Activation Framework(JAF)の依存関係が混沌としており、困っている。
ここに差分とかはまとめたけど、JAFは現状だと以下のものがある。
1) activation-1.1.1.jar
2) javax.activation-api-1.2.0.jar
3) jakarta.activation-api-1.2.2.jar
4) jakarta.activation-api-2.0.1.jar
今の世の中だと、jakartaのものがここでメンテされているので、これを使うべきなのだが、昔からあるライブラリなどは、activationを使っていたり、そんな簡単な話ではない…。
問題になるのは、依存しているライブラリがそれらのどれかに依存しているケースである。
2と3はほぼ同じと考えて良さそうなので、どちらもある場合は、2を依存関係から除外すれば良い。1と2を見ると、1にはcom.sunパッケージがあるので、これらを期待する場合は1を残す必要がある。3と4はパッケージ名が異なるので、3と4にそれぞれ依存関係が必要なライブラリがある場合は、2を追加しておくとか…。あまりにも混沌としている。
わかりにくすぎる感じがあるが、1〜4まですべてが必要な場合は、1と4だけがあれば、多くの場合で問題ないかなという感じがする。まぁ、できれば1でなく、3を使いたい気もするのが、4に打ち消されたりもするので…。
追記:jakarta.activationという-apiでなく、1のcom.sunパッケージが含んだものもあり、これを使えば、3とcom.sun.activationのjakarta.activation-2.0.1.jarを利用するパターンもあるらしい。なので、1と4より、このパターンのほうが良いかもしれない…。