Устранение ошибки «ограничения загрузчика при связывании [...] класса» в Java - PullRequest
0 голосов
/ 03 декабря 2009

Я новичок в Java и испытываю проблемы с пониманием исключений, создаваемых платформой.

Сейчас я пытаюсь внедрить валидатор регулярных выражений в приложение, состоящее из Java 5 EE с myFaces 1.2 и Tobago, работающим в Apache Tomcat 5.5.

Я следовал нескольким учебникам (в том числе по Java 5 EE от SUN) и зашел довольно далеко. Однако при вызове моего jsp я получаю следующее сообщение об ошибке:

java.lang.LinkageError: loader constraints violated when linking javax/faces/validator/Validator class

Может кто-нибудь объяснить мне, что мне нужно сделать, чтобы решить эту проблему?

Пока что кажется, что MyFaces 1.1.7 конфликтует с версией TomCat 5.5. Оба содержат пакеты javax. * (Один из них, а именно javax.faces.validator). Класс валидатора имеет другую версию в пакетах. Соответствующая библиотека MyFaces называется myfaces-api-1.1.7.jar, а библиотека TomCat называется javaee.jar.

Включенные пакеты javax в lib myfaces - это подмножество пакетов из библиотеки javaee. Однако ... Я не могу пропустить ни то, ни другое, потому что тогда проект не запустится.

Какие-нибудь советы?

Ответы [ 3 ]

2 голосов
/ 03 декабря 2009

Это почти наверняка вызвано тем, что ваше приложение имеет собственную копию Validator (в одном из своих файлов JAR), и это конфликтует с собственной копией сервера. Что-то это может вызвать LinkageError.

Узнайте, какой из ваших файлов WAR или EAR содержит это, и удалите его (вместе с остальными классами javax.faces).

1 голос
/ 03 декабря 2009

Похоже, проблема пути к классам. Проверьте ваш путь к классу для двух jar с конфликтующими версиями (обе содержат класс javax.faces.validator.Validator)


Согласно домашней странице MyFaces. Tomcat Config: Tomcat 5.5.x

Некоторые пользователи сообщали о проблемах, когда использование MyFaces с Tomcat 5.5.x. Вот это краткое руководство, которое, мы надеемся, помочь вам не столкнуться с тем же проблемы: -)

Если вы используете бинарную версию MyFaces: MyFaces упакован так что он работает с Tomcat 5.0.x так WEB-INF / lib / jsp-2.0.jar и WEB-INF / lib / commons-el.jar JAR-файлы должны быть удалены из вашего WAR-файлы (включая примеры).

Если вы строите из источника: если Вы хотите построить MyFaces с нуля для работы с Tomcat 5.5.x необходимо установить свойство tomcat.pre.5.5.version в $ MYFACES_HOME / сборки / build.default.properties файл со значением false.

0 голосов
/ 03 декабря 2009

Возможно, у вас есть две конфликтующие версии одной и той же библиотеки, доступные на вашем пути к классам. Например, у вас может быть файл jar в WEB-INF / lib, который уже предоставлен в TOMCAT_HOME / lib. (el-api.jar - распространенный преступник, но есть и другие возможности.)

...