javax.servlet.ServletException:java.lang.LinkageError

javax.servlet.ServletException:java.lang.LinkageError,java,maven,servlets,struts2,build-tools,Java,Maven,Servlets,Struts2,Build Tools,这些是我在pom.xml(Maven)中使用的依赖项。 我不明白为什么我会这样 javax.servlet.ServletException: java.lang.LinkageError 当我尝试运行我的项目时 <dependencies> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-dojo-

这些是我在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>   

使用提供的范围修改您的
jspapi
,这样Maven就不会尝试多次加载它

您可能多次包含罐子。您看到的linkageErrors来自同一名称的两个不同加载程序以两种不同方式加载的同一名称类。确保没有任何额外的罐子


特别是,
javax.servlet.jsp.JspApplicationContext
是由服务器类加载器提供的,由于随后的冲突,不应作为JAR添加。jSP API可能提供的
javax.el.ExpressionFactory
也一样。

我们能看到完整的堆栈跟踪吗?我已经编辑了我的问题,请查看。我也搜索了同样的内容&可能是因为我两次包含了一些jar,但我不知道是哪一个。您使用的是什么版本的应用服务器?它看起来像雄猫,但数字是多少?看起来您指定了错误的jsp版本。您还应该指定提供的jsp api,因为在部署过程中不需要它。(应用程序服务器有自己的jsp/jstl实现,您应该使用)@ctwomey1您似乎对此有一定的经验,您能否提供一个答案,因为我的操作失败,我无法找出任何过去的问题?谢谢您的回答。请告诉我现在应该做什么?@amit_yo将
jspapi
的范围更改为提供的,正如我所说的。如果这不起作用,请明确地告诉我。对不起,这不起作用。@amit_yo不幸的是,除此之外,我还不熟悉Tomcat deloyment。我将投票表决这个问题,并希望其他人能给出解决方案。不过谢谢你的时间,我将尝试自己解决它。
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)