2014-12-09 5 views
0

Я использую файл jar, указанный моим клиентом в CQ5.6.1. Для некоторых классов в файле jar требуется log4j. Поэтому я создал пакет Osgi с файлами jar и log4j клиента с помощью Eclipse. Я установил это в пакеты Osgi CQ и активировал пакет. Класс из клиентской банки корректно вызывается из моих компонентов jsp, но клиентская банка не может найти классы log4j. Я получаю ошибку java.lang.ClassNotFoundException: org.apache.log4j.PropertyConfigurator not found. Я также попытался положить банку log4j в папку установки под моим приложением \ в CQ, но это также не помогло. Я искал в google, но пока не нашел подходящего решения. Любая помощь для решения высоко ценится. Спасибо.CQ5.6.1- Log4j в пакете Osgi не обнаруживает

ответ

0

Ваш пакет log4j должен экспортировать пакет org.apache.log4j, а пакет клиента должен импортировать его. Скрипты Sling видят все экспортированные пакеты.

Вы можете использовать консоль OSGi в/system/console/bundles, чтобы убедиться, что эти экспорт и импорт верны, страница состояния клиентского пакета должна показать, что он импортирует пакет из пакета log4j.

Если экспорт правильный, причиной может быть и некоторый log4j или клиентский код, загружающий PropertyConfigurator с использованием загрузчика классов контекста потока (TCCL) или другого механизма, который не очень хорошо работает с OSGi. Если это TCCL, вы можете обойти проблемы, установив TCCL самостоятельно на код, загружающий PropertyConfigurator.

CQ действительно предоставляет API-интерфейсы регистрации slf4j из коробки, поэтому, если вы можете убедить своего клиента переключиться на те, что, вероятно, проще.