2010年9月24日金曜日

OSGi環境におけるLinkageError

OSGi環境でWebサービスを構築している際、以下のようなエラーメッセージが発生した。
java.lang.LinkageError: loader constraint violation: loader (instance of <bootloader>) previously initiated loading for a different type with name "javax/xml/namespace/QName"
JDKで提供されているはずのjavax.xml.namespace.QNameが異なる??
googleで調べてみると、以下のような解説を発見。
http://frankkieviet.blogspot.com/2009/03/javalanglinkageerror-loader-constraint.html
JDKで提供されているようなクラスであっても、ライブラリ?(OSGiの場合はバンドル)ごとに参照先が異なると発生しうる現象のよう。
で、自分の環境をよくよくみてみると、ひとつのバンドルのPrivate-Packageにjavax.xml.namespaceを含んでしまっていることが判明。これをImport-Packageに変更することで解決された。

0 件のコメント:

コメントを投稿