javax.servlet.ServletException: java.lang.LinkageError

Это зависимости, которые я использую в pom.xml (Maven). Я не понимаю, почему я получаю

 javax.servlet.ServletException: java.lang.LinkageError 

когда я пытаюсь запустить свой проект.

<dependencies>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-dojo-plugin</artifactId>
        <version>2.3.4.1</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.4</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts-taglib</artifactId>
        <version>1.3.10</version>

    </dependency>
    <dependency>
        <groupId>org.jasypt</groupId>
        <artifactId>jasypt-hibernate3</artifactId>
        <version>1.9.0</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.2.6.Final</version>
    </dependency>
    <dependency>
        <groupId>javax.transaction</groupId>
        <artifactId>jta</artifactId>
        <version>1.1</version>
    </dependency>
    <dependency>
        <groupId>com.jgeppert.struts2.jquery</groupId>
        <artifactId>struts2-jquery-plugin</artifactId>
        <version>3.3.3</version>
    </dependency>
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>1.7.3</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.21</version>
    </dependency>

    <dependency>
        <groupId>opensymphony</groupId>
        <artifactId>sitemesh</artifactId>
        <version>2.4.1</version>
    </dependency>
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-json-plugin</artifactId>
        <version>2.3.8</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
    </dependency>
</dependencies>   

Он работал на другом ПК. Я только что сделал maven clean, а затем, когда я перешел к местоположению проекта на моем жестком диске, заархивировал его, и когда я импортировал проект из zip здесь, дома, возникла эта проблема. Пожалуйста, скажите, если у вас есть намек или подсказка. Спасибо.

РЕДАКТИРОВАТЬ 1:

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

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/Index_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
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:343)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)


root cause 

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/Index_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
    org.apache.jsp.Index_jsp._jspInit(Index_jsp.java:26)
    org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49)
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:171)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:356)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

person Amit Kumar    schedule 08.10.2013    source источник
comment
Можем ли мы увидеть полную трассировку стека?   -  person nanofarad    schedule 08.10.2013
comment
Я отредактировал свой вопрос, пожалуйста, посмотрите его. Также я ищу то же самое и понял, что это может быть связано с тем, что я дважды включил несколько банок, но какую из них я не могу понять.   -  person Amit Kumar    schedule 08.10.2013
comment
Какую версию сервера приложений вы используете? это похоже на кота, но какой номер? похоже, вы указываете неправильную версию jsp. Вы также должны указать jsp-api, поскольку он не нужен во время развертывания. (Серверы приложений имеют свои собственные реализации jsp/jstl, которые вы должны использовать)   -  person ctwomey    schedule 08.10.2013
comment
@ctwomey1 Похоже, у вас есть некоторый опыт в этом, можете ли вы дать ответ, поскольку мой не подходит для OP, и я не могу понять что-либо там?   -  person nanofarad    schedule 08.10.2013


Ответы (1)


Измените свой jsp-api с областью действия provided, чтобы Maven не пытался загрузить его несколько раз.

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

В частности, javax.servlet.jsp.JspApplicationContext предоставляется загрузчиком классов сервера, и его не следует добавлять в виде JAR-файла из-за возникающего конфликта. То же самое для javax.el.ExpressionFactory, который может быть предоставлен API jSP.

person nanofarad    schedule 08.10.2013
comment
Спасибо за ответ, гексафракция. Подскажите пожалуйста что мне теперь делать? - person Amit Kumar; 08.10.2013
comment
@amit_yo Измените область действия jsp-api на предоставленную, как я уже сказал. Если это не сработает, пожалуйста, скажите мне об этом прямо. - person nanofarad; 08.10.2013
comment
Извините, это не работает. - person Amit Kumar; 08.10.2013
comment
@amit_yo К сожалению, я не знаком с развертыванием Tomcat, кроме этого. Я подниму вопрос и надеюсь, что кто-то еще может дать решение. - person nanofarad; 08.10.2013
comment
Тем не менее, спасибо за ваше время, я постараюсь решить эту проблему самостоятельно. - person Amit Kumar; 08.10.2013
comment
Я решил проблему, просто нужна была правильная версия jsp-api 2.2. Также я исключил el-api.jar из своего пути к классам. Спасибо всем за ваше время и поддержку. - person Amit Kumar; 08.10.2013