【问题标题】:Spring 3.0.6 with Tomcat 8带有 Tomcat 8 的 Spring 3.0.6
【发布时间】:2016-05-25 11:38:09
【问题描述】:

我的应用程序基于 Java 8、Spring 3.0.6 构建并在 Tomcat 7 上运行。

一切正常。

但是,当我将 Tomcat 版本更新到 8 时,我得到以下信息。

有谁知道 Spring 3 在 Tomcat 8 上运行是否有任何问题?

    [2016-05-25 11:21:40,307][INFO] - ContextLoader.log: Root WebApplicationContext: initialization started
[2016-05-25 11:21:41,072][ERROR] - ContextLoader.log: Context initialization failed
java.lang.NoClassDefFoundError: org/springframework/core/env/ConfigurableEnvironment
    at java.lang.Class.getDeclaredConstructors0(Native Method) ~[?:1.8.0_72]
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) ~[?:1.8.0_72]
    at java.lang.Class.getConstructor0(Class.java:3075) ~[?:1.8.0_72]
    at java.lang.Class.getDeclaredConstructor(Class.java:2178) ~[?:1.8.0_72]
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104) ~[org.springframework.beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:347) ~[spring-web-4.0.0.RELEASE.jar:4.0.0.RELEASE]
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:280) [spring-web-4.0.0.RELEASE.jar:4.0.0.RELEASE]
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) [spring-web-4.0.0.RELEASE.jar:4.0.0.RELEASE]
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4813) [catalina.jar:8.0.35]
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5272) [catalina.jar:8.0.35]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) [catalina.jar:8.0.35]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) [catalina.jar:8.0.35]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) [catalina.jar:8.0.35]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) [catalina.jar:8.0.35]
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1092) [catalina.jar:8.0.35]
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834) [catalina.jar:8.0.35]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_72]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_72]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_72]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_72]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_72]
Caused by: java.lang.ClassNotFoundException: org.springframework.core.env.ConfigurableEnvironment
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305) ~[catalina.jar:8.0.35]
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1139) ~[catalina.jar:8.0.35]
    ... 21 more

【问题讨论】:

  • 你的tomcat 7的lib文件夹中有一些spring jar吗?

标签: java spring tomcat tomcat7 tomcat8


【解决方案1】:

EnvironmentCapable 类从 Spring 3.1 开始提供。

请运行mvn:dependency tree 命令以正确检查所有依赖项。

【讨论】:

  • 它不是一个 Maven 项目。有没有其他方法可以查到?这是否也意味着我必须升级到 spring 3.1。我目前在 3.0.6
  • 是的,你可以将它升级到 spring 3.1
【解决方案2】:

Tomcat8 与 Spring 3.1 或更高版本兼容。你换成Spring3.1,就解决了。

【讨论】:

    【解决方案3】:

    Tomcat 8 在启动时需要“ConfigurableEnvironment”类。此类存在于 spring-core 3.1.0 jar 及更高版本中。因此,您需要升级您的 spring 版本。

    【讨论】:

      猜你喜欢
      • 2016-01-08
      • 2016-04-28
      • 2016-03-28
      • 2018-02-10
      • 2012-08-31
      • 2014-05-02
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多