複数のモジュールを備えた Eclipse 3.7 RCP ベースのアプリケーションに取り組んでいます。モジュール A は、mybatis-3.2.2.jar を含む一連のライブラリです。モジュール B はモジュール A (manifest.mf の Require-Bundle) に依存しており、MyBatis を使用してデータベース内のデータにアクセスするコードがあります。モジュール B にマッパー クラスと XML を含むパッケージをエクスポートし、モジュール A にインポートしました。コードで SqlSessionFactory を構築していますが、すべてのマッパー クラスを名前で追加すると正常に動作します。
configuration.addMapper(MyMapper.class);
ただし、パッケージ内のすべてのマッパーを追加しようとすると:
configuration.addMappers(MyMapper.class.getPackage().getName());
MyBatis はそれらを認識しません。
デフォルトのクラスローダーを変更しようとしましたが、これは役に立ちませんでした。
Resources.setDefaultClassLoader(this.getClass().getClassLoader());
この問題は、OSGI 環境でのクラスの可視性に関係していると思われます。その場合、アプリケーションで修正する方法はありますか?