Orika ClassCastException в Eclipse при повторном развертывании

Я использую orika-core-1.5.4.jar в своем портлете Liferay 7.3.5 CE GA6 для сопоставления некоторых классов. Все идет хорошо, если я тестирую его в основном методе или если это первый раз, когда портлет развертывается, но идет наперекосяк, если я повторно развертываю его - например. когда я делаю некоторые изменения, а затем развертываю их. Ошибка следующая:

 java.lang.ClassCastException: ma.glasnost.orika.generated.Orika_MedicForm_FormDTO_Mapper850365342121300$0 cannot be cast to ma.glasnost.orika.impl.GeneratedObjectBase

Из того, что я прочитал (здесь — интересная статья, а также эта статья о стеке), это потому что в первый раз класс был сгенерирован с помощью AppClassLoader, а во второй раз с RestartClassLoader — статьи относятся к приложениям Spring. Но мне не ясно, как с этим справиться. Теперь мне приходится каждый раз перезапускать сервер, чтобы этого избежать.

Любые идеи помогут, спасибо!


person Victor    schedule 22.11.2020    source источник
comment
Если в вашем коде или библиотеке orika есть какая-либо статическая переменная, у вас могут возникнуть проблемы, потому что загрузчик классов модулей OSGI отличается при каждом запуске модуля, поэтому, если вы сохраните статическую ссылку, после перезапуска модуля этот класс будет принадлежать старому загрузчику классов, вызывая ClassCastException, если вы его используете. Поэтому просмотрите свой код и избегайте использования статической переменной, а также просмотрите библиотеку orika, чтобы дважды проверить, совместима ли она с osgi.   -  person jorgediaz-lr    schedule 23.11.2020
comment
@ jorgediaz-lr Я попробую и вернусь с обновлениями. Спасибо !   -  person Victor    schedule 23.11.2020
comment
К сожалению, похоже, что он не реагирует на это изменение - я сделал его нестатическим, а также сделал его в области метода (не в области класса), но все равно возвращает то же исключение при перезапуске.   -  person Victor    schedule 23.11.2020