我正在开发具有多个模块的基于 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 环境中类的可见性有关。如果是这种情况,有没有办法在应用程序中修复它?