java - Spring不兼容的版本?

标签 java spring spring-mvc tomcat

我想根据我当前的开发更新 spring 版本。

由于我将我的程序更新到 spring 版本 4.2.6.RELEASE(因为 spring-data-jpa 在最新版本中使用 4.2.6 版本),我收到以下错误。

java.lang.NoSuchMethodError: org.springframework.web.context.ConfigurableWebApplicationContext.getEnvironment()Lorg/springframework/core/env/ConfigurableEnvironment;
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:397)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5003)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5517)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1095)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1960)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

据我所知,这应该是由于版本不匹配造成的,但我找不到。 这是我的依赖项:树:

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @brenntag-utils ---
[INFO] de.twt.ecms.firstspirit.modules:brenntag-utils:jar:1.7.0-SNAPSHOT
[INFO] +- junit:junit:jar:4.10:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.1:test
[INFO] +- de.espirit.firstspirit:client:jar:5.2.422:runtime
[INFO] +- de.espirit.firstspirit:access:jar:5.2.422:provided
[INFO] +- de.espirit.firstspirit:server:jar:5.2.422:provided
[INFO] +- org.apache.commons:commons-csv:jar:1.0:compile
[INFO] +- org.springframework:spring-webmvc:jar:4.2.6.RELEASE:compile
[INFO] |  +- org.springframework:spring-beans:jar:4.2.6.RELEASE:compile
[INFO] |  +- org.springframework:spring-context:jar:4.2.6.RELEASE:compile
[INFO] |  +- org.springframework:spring-core:jar:4.2.6.RELEASE:compile
[INFO] |  +- org.springframework:spring-expression:jar:4.2.6.RELEASE:compile
[INFO] |  \- org.springframework:spring-web:jar:4.2.6.RELEASE:compile
[INFO] +- org.springframework:spring-context-support:jar:4.2.6.RELEASE:compile
[INFO] +- org.springframework.data:spring-data-jpa:jar:1.10.2.RELEASE:compile
[INFO] |  +- org.springframework.data:spring-data-commons:jar:1.12.2.RELEASE:compile
[INFO] |  +- org.springframework:spring-orm:jar:4.2.6.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-jdbc:jar:4.2.6.RELEASE:compile
[INFO] |  +- org.springframework:spring-aop:jar:4.2.6.RELEASE:compile
[INFO] |  |  \- aopalliance:aopalliance:jar:1.0:compile
[INFO] |  +- org.springframework:spring-tx:jar:4.2.6.RELEASE:compile
[INFO] |  +- org.aspectj:aspectjrt:jar:1.8.9:compile
[INFO] |  +- org.slf4j:slf4j-api:jar:1.7.21:compile
[INFO] |  \- org.slf4j:jcl-over-slf4j:jar:1.7.21:runtime
[INFO] +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] +- org.hibernate:hibernate-entitymanager:jar:5.1.0.Final:compile
[INFO] |  +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile
[INFO] |  +- dom4j:dom4j:jar:1.6.1:compile
[INFO] |  |  \- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] |  +- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] |  \- org.apache.geronimo.specs:geronimo-jta_1.1_spec:jar:1.1.1:compile
[INFO] +- org.hibernate:hibernate-core:jar:5.1.0.Final:compile
[INFO] |  +- antlr:antlr:jar:2.7.7:compile
[INFO] |  +- org.jboss:jandex:jar:2.0.0.Final:compile
[INFO] |  \- com.fasterxml:classmate:jar:1.3.0:compile
[INFO] +- javax.transaction:jta:jar:1.1:compile
[INFO] +- org.hibernate.common:hibernate-commons-annotations:jar:5.0.1.Final:compile
[INFO] +- org.apache.commons:commons-dbcp2:jar:2.1.1:compile
[INFO] |  \- commons-logging:commons-logging:jar:1.2:compile
[INFO] +- org.apache.commons:commons-pool2:jar:2.4.2:compile
[INFO] +- org.hibernate:hibernate-validator:jar:5.1.3.Final:compile
[INFO] |  \- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.7.1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.7.1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.7.1:compile
[INFO] +- rome:rome:jar:1.0:compile
[INFO] |  \- jdom:jdom:jar:1.0:compile
[INFO] +- org.jdom:jdom:jar:1.1:compile
[INFO] +- org.thymeleaf:thymeleaf:jar:2.1.4.RELEASE:compile
[INFO] |  +- ognl:ognl:jar:3.0.8:compile
[INFO] |  \- org.unbescape:unbescape:jar:1.1.0.RELEASE:compile
[INFO] \- org.thymeleaf:thymeleaf-spring4:jar:2.1.4.RELEASE:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO]  ------------------------------------------------------------------------

到目前为止我似乎找不到错误...
我正在使用带有 Java 1.7.0_101 的 tomcat 7。

我错过了什么?

更新一:Pom.xml(重要部分)

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <project.build.type>D</project.build.type>
    <project.build.identifier>${maven.build.timestamp}</project.build.identifier>
    <project.firstspirit.version>5.2.422</project.firstspirit.version>
    <project.license.version>[2.0.1,)</project.license.version>
    <httpclient.version>4.2.5</httpclient.version>
    <spring.version>4.2.6.RELEASE</spring.version>
</properties>
[...]
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>de.espirit.firstspirit</groupId>
        <artifactId>client</artifactId>
        <version>${project.firstspirit.version}</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>de.espirit.firstspirit</groupId>
        <artifactId>access</artifactId>
        <version>${project.firstspirit.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>de.espirit.firstspirit</groupId>
        <artifactId>server</artifactId>
        <version>${project.firstspirit.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-csv</artifactId>
        <version>1.0</version>
    </dependency>

    <!-- Web layer -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.10.2.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <version>1.0.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.1.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.1.0.Final</version>
    </dependency>
    <dependency>
        <groupId>javax.transaction</groupId>
        <artifactId>jta</artifactId>
        <version>1.1</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.common</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>5.0.1.Final</version>
    </dependency>


    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
        <version>2.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
        <version>2.4.2</version>
    </dependency>


    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.1.3.Final</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.7.1</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.7.1</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.7.1</version>
    </dependency>

    <dependency>
        <groupId>rome</groupId>
        <artifactId>rome</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>org.jdom</groupId>
        <artifactId>jdom</artifactId>
        <version>1.1</version>
    </dependency>

    <dependency>
        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf</artifactId>
        <version>2.1.4.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf-spring4</artifactId>
        <version>2.1.4.RELEASE</version>
    </dependency>
</dependencies>

最佳答案

我知道这种答案不完全符合堆栈溢出的标准,但内容不适合评论。

我建议您尝试称为“ Material list ”(BOM) 的 maven 概念。 更改您的 pom.xml这样:

  1. 添加 <dependencyManagement>
  2. 在里面,添加一个import范围内的 BOM 依赖
  3. 删除<version>依赖项中的元素
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>${spring.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <!-- whatever you need -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
    </dependency>
</dependencies>

关于java - Spring不兼容的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38368659/

相关文章:

java - Activity bpmn 引擎中的流程定义中的 processType 是什么意思?

java - 在java中用 ""替换{?

java - 嵌套方法 vs "piped"方法,哪个更好?

java - 尝试重定向时出现 Spring Security 错误 "Access is Denied"

java - Spring Controller 重写@ModelAttribute 请求参数映射

spring-mvc - @ActionMapping、@RequestMapping、@Rendermapping的区别

java - 仅从一个类中获取 Intent 额外内容

java - 如何在 Spring 将@Scheduled(cron) 与SpEL 一起使用?

java - spring boot多行import.sql application.yml配置

java - 使用列表填充表时 JSP 中出现异常