Ошибка LinkageError в Tomcat 7 на EL - PullRequest
1 голос
/ 15 декабря 2011

Эксперты

Я недавно попробовал свое приложение Spring MVC в Tomcat 7.0.23. Управление зависимостями в Maven. Я получаю ошибку ниже:

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/WEB_002dINF/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 avax/el/ExpressionFactory; used in the signature

То же приложение отлично работает в Glassfish. Я не могу понять, что здесь происходит.

Ниже приведен отрывок из pom.xml:

    <java-version>1.7</java-version>
    <java.servlet.version>2.5</java.servlet.version>
    <java.servlet.jsp.version>2.1</java.servlet.jsp.version>
    <java.servlet.jstl.version>1.2</java.servlet.jstl.version>


    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>${java.servlet.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>${java.servlet.jsp.version}</version>
        <scope>provided</scope>

    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>${java.servlet.jstl.version}</version>
    </dependency>

    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>el-api</artifactId>
        <version>2.2</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>el-impl</artifactId>
        <version>2.2</version>
        <scope>runtime</scope>
    </dependency>

Я поиграл со многими комбинациями библиотек, как упоминалось в разных постах, но все же не повезло. Любой совет приветствуется.

1 Ответ

0 голосов
/ 18 сентября 2012

Tomcat 7 реализует JSP версии 2.2 (Tomcat 6 имеет JSP версии 2.1), поэтому измените

<java.servlet.jsp.version>2.1</java.servlet.jsp.version>

до

<java.servlet.jsp.version>2.2</java.servlet.jsp.version>
...