2013-03-10 3 views
4

У меня есть дженкинс с установленным плагином openid. Я пытаюсь пройти аутентификацию через openid, но получаю веб-страницу, жалующуюся на java.lang.NoClassDefFoundError: org/openid4java/util/OpenID4JavaDOMParser.Classpath для плагинов jenkins

Пропущенный класс содержится в банке, расположенной в «plugins/openid/WEB-INF/lib /».

Почему Jenkins не может загрузить этот класс?

Любые идеи по отладке? (Файл журнала не дает гораздо больше информации, кроме NoClassDefFoundError.)

Обновление: После того, как символическая ссылка на «war/WEB-INF/lib», jenkins может получить доступ к классу. Кажется, что банки в плагинах просто игнорируются, но согласно Documentation они должны быть доступны.

+0

мне удалось получить плагин для работы уродливым обходного добавления еще двух банок в войне/WEB-INF/Lib. - Вопрос остается в силе. – michas

ответ

0

Это зависит от того, какой класс загрузчик пытается загрузить класс, если он инициализируется некоторой библиотекой или обнаружением, он может использовать загрузчик классов Thread, а не ваш загрузчик классов plugin, который обычно равен ClassicPluginStrategy$AntClassLoader2.

Возможно, у вас есть возможность передать загрузчик классов или создать экземпляр напрямую. У меня была такая же проблема с jax-rs и исправлена ​​так.

https://github.com/carlossg/KubernetesAPIJavaClient/blob/c6082e3/src/main/java/com/github/kubernetes/java/client/v2/RestFactory.java#L66

Смежные вопросы