Подтвердить что ты не робот

Нарушение ограничения загрузчика

Я столкнулся с проблемой того, что один и тот же .jar(для моего случая, el-api.jar v2.1) дважды для одного проекта, следовательно, следующий стек ошибок, когда я пытаюсь запустить мой проект с помощью Tomcat 6.

WARNING: Unexpected error forwarding to login page
javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/login_jsp, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature

 at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/login_jsp, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature

Я нашел http://blog.springsource.com/2008/10/20/understanding-the-osgi-uses-directive/

но это не полезно, поскольку решение влияет на слишком много частей моего проекта.

Я не могу вносить какие-либо изменения в Tomcat, а также проект будет использоваться многими другими пользователями.

Текущая работа заключается в том, чтобы manuelly удалить el-api.jar каждый раз, когда мы делаем build и использует Tomcat6. Затем нам нужно поместить .jar обратно, поскольку это требуется для других вещей.

Я использую Maven 2 и Maven 3 для сборки. (Кстати, кто-нибудь знал об использовании Maven3 на Jruby?)

Может ли кто-нибудь помочь мне в этом вопросе?

4b9b3361

Ответ 1

Я столкнулся с проблемой того, что один и тот же .jar(для моего случая, el-api.jar v2.1) дважды для одного проекта, следовательно, следующий стек ошибок, когда я пытаюсь запустить мой проект с помощью Tomcat 6.

Затем отметьте артефакт el-api.jar как provided, если он есть.

Текущая работа заключается в том, чтобы manuelly удалить el-api.jar каждый раз, когда мы делаем build и использует Tomcat6. Затем нам нужно поместить .jar обратно, поскольку это требуется для других вещей.

Гораздо лучший способ справиться с этим - объявить зависимость внутри профилей и пометить ее как provided (например, в профиле "tomcat6" ) или не в зависимости от потребностей.

Ответ 2

Я получил эту ошибку, пытаясь запустить образец Spring (3.0.5) mvc-ajax с Tomcat 7.

Tomcat 7 использует el-api 2.2 и jsp-api 2.2. Файл pm mvc-ajax указывает jsp-api 2.1, который также содержит классы в el-api.

Чтобы выполнить это, я прокомментировал jsp-api 2.1 из pom. Это позволило Tomcat использовать собственную (более новую) версию.