【发布时间】:2013-10-02 15:19:26
【问题描述】:
我正在开发具有多个模块的基于 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 环境中类的可见性有关。如果是这种情况,有什么方法可以在应用程序中修复它?
【问题讨论】:
-
此外,您可能希望向 mybatis 提交错误,因为他们使用 ResolverUtil 的方式甚至不允许您提供自己的类加载器而无需重新编写扫描代码。至少它立即看起来如何。
-
我找到了这个链接,它对我很有效techtwitch.blogspot.de/2012/06/…