我正在使用多個模塊的基於Eclipse 3.7 RCP的應用程序。模塊A是一堆庫,包括mybatis-3.2.2.jar。模塊B依賴於模塊A(manifest.mf中的Require-Bundle),並具有使用MyBatis訪問數據庫中的數據的代碼。我已經在模塊B中導出了包含映射程序類和XML的包,並將它們導入到模塊A中。我在代碼中構建SqlSessionFactory,如果按名稱添加所有Mapper類,則工作正常。如何避免在OSGI環境中使用MyBatis加載類問題?
configuration.addMapper(MyMapper.class);
但是當我嘗試添加所有映射器在包:
configuration.addMappers(MyMapper.class.getPackage().getName());
MyBatis不會自動看到它們。
我試着改變默認的類加載器,但這沒有幫助。
Resources.setDefaultClassLoader(this.getClass().getClassLoader());
我懷疑這個問題與OSGI環境中類的可見性有關。如果是這樣的話,有什麼方法可以在應用程序中修復它?
此外,您可能希望用mybatis提交錯誤,因爲它們使用ResolverUtil的方式甚至不允許您提供自己的類加載器,而無需重新編寫掃描代碼。至少它立即看起來如何。 –
我發現這個鏈接,它很好地爲我工作http://techtwitch.blogspot.de/2012/06/boldly-go-where-no-sql-mapper-has-gone.html –