Я работаю над приложением Eclipse 3.7 RCP с несколькими модулями. Модуль A представляет собой набор библиотек, включая mybatis-3.2.2.jar. Модуль B зависит от модуля A (Require-Bundle в манифесте.mf) и имеет код, который использует MyBatis для доступа к данным в базе данных. Я экспортировал пакеты с классами mapper и XML в модуль B и импортировал их в модуль A. Я создаю SqlSessionFactory в коде, и он отлично работает, если я добавляю все классы Mapper по имени, например.Как избежать проблем с загрузкой в MyGatis в среде OSGI?
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 –