1

我试图让一个 Web 应用程序(不是我编写的)运行,但是,在部署时,我得到了以下异常。

  1. java.lang.NoSuchMethodError: org.springframework.web.context.ConfigurableWebApplicationContext.setId(Ljava/lang/String;)V

我已经检查并验证了WEB-INF/libs文件夹中的 spring-blabla jar 没有版本冲突(我使用的是 spring 版本 3.2.0.M1)和pom.xml中的依赖项文件中的依赖项具有以下内容形式。

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

我一直很绝望,所以,作为最后的手段,我检查了一个中文网站,并在 * web.xml * 文件中尝试了以下侦听器

<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>

在已经存在的一个下:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

当我运行应用程序时,我不再收到以前的异常,而是另一个,

上下文初始化失败org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.springframework.web.context.support.XmlWebApplicationContext]:构造函数抛出异常;嵌套异常是 java.lang.NoSuchMethodError: org.springframework.jndi.JndiLocatorDelegate.isDefaultJndiEnvironmentAvailable()Z

我真的不知道该怎么办......

4

1 回答 1

8

您的运行时很可能正在读取 Spring 2.0 而不是 3.2。看看 Spring 2 ConfigurableWebApplicationContext,它没有setId(String)方法。

我会通过检查 jar/war 文件开始调试问题,看看是否有任何重复的 Spring 版本。还要检查 web 容器类路径(例如:tomcat lib 文件夹)。如果那里有 Spring 2 罐子,可能会引起混乱

于 2013-07-11T12:45:40.750 回答