2013-11-21 25 views
16

之前,这里是我的错误:Bean工厂未初始化或已关闭 - 称之为“刷新”

我收到此错误,任何一个可以帮助我在此。

> SEVERE: Exception sending context initialized event to listener 
> instance of class 
> org.springframework.web.context.ContextLoaderListener 
> java.lang.NoSuchMethodError: 
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.setEnvironment(Lorg/springframework/core/env/Environment;)V 
> at 
> org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:87) 
> at 
> org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131) 
> at 
> org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522) 
> at 
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436) 
> at 
> org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385) 
> at 
> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284) 
> at 
> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 
> at 
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723) 
> at 
> org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226) 
> at 
> org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221) 
> at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at 
> java.util.concurrent.FutureTask.run(Unknown Source) at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
> at java.lang.Thread.run(Unknown Source) Nov 21, 2013 12:54:38 PM 
> org.apache.catalina.core.StandardContext startInternal SEVERE: Error 
> listenerStart Nov 21, 2013 12:54:38 PM 
> org.apache.catalina.core.StandardContext startInternal SEVERE: Context 
> [/FLPalette] startup failed due to previous errors Nov 21, 2013 
> 12:54:38 PM org.apache.catalina.core.ApplicationContext log INFO: 
> Closing Spring root WebApplicationContext Nov 21, 2013 12:54:38 PM 
> org.apache.catalina.core.StandardContext listenerStop SEVERE: 
> Exception sending context destroyed event to listener instance of 
> class org.springframework.web.context.ContextLoaderListener 
> java.lang.IllegalStateException: BeanFactory not initialized or 
> already closed - call 'refresh' before accessing beans via the 
> ApplicationContext at 
> org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:172) 
> at 
> org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1066) 
> at 
> org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1040) 
> at 
> org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:988) 
> at 
> org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:556) 
> at 
> org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142) 
> at 
> org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4763) 
> at 
> org.apache.catalina.core.StandardContext$4.run(StandardContext.java:5472) 
> at java.lang.Thread.run(Unknown Source)  at 
> org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5481) 
> at 
> org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225) 
> at 
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153) 
> at 
> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033) 
> at 
> org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774) 
> at 
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
> at 
> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033) 
> at 
> org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291) 
> at 
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
> at 
> org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 
> at 
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
> at 
> org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727) 
> at 
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
> at org.apache.catalina.startup.Catalina.start(Catalina.java:620) at 
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
> sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at 
> java.lang.reflect.Method.invoke(Unknown Source) at 
> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303) at 
> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431) Nov 21, 
> 2013 12:54:38 PM org.apache.coyote.AbstractProtocol start INFO: 
> Starting ProtocolHandler ["http-bio-8080"] Nov 21, 2013 12:54:38 PM 
> org.apache.coyote.AbstractProtocol start INFO: Starting 
> ProtocolHandler ["ajp-bio-8009"] Nov 21, 2013 12:54:38 PM 
> org.apache.catalina.startup.Catalina start 

的pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.paypal.palette</groupId> 
    <artifactId>FLPalette</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <name>FLPalette</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
    <groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <version>5.1.5</version> 
</dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${org.springframework.version}</version> 
      </dependency> 
      <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 

    <dependency> 
    <groupId>wsdl4j</groupId> 
    <artifactId>wsdl4j</artifactId> 
    <version>1.6.3</version> 
    <scope>test</scope> 
</dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.8.1</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>3.1.1.RELEASE</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>3.1.1.RELEASE</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.14</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>3.1.1.RELEASE</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>jstl</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.1.2</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>taglibs</groupId> 
     <artifactId>standard</artifactId> 
     <version>1.1.2</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>3.1.1.RELEASE</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>3.1.1.RELEASE</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-core</artifactId> 
     <version>3.1.1.RELEASE</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>3.1.1.RELEASE</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>3.1.1.RELEASE</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>3.1.1.RELEASE</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-ldap</artifactId> 
     <version>3.1.1.RELEASE</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.jcraft</groupId> 
     <artifactId>jsch</artifactId> 
     <version>0.1.50</version> 
    </dependency> 
    <dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-taglibs</artifactId> 
    <version>3.1.0.RELEASE</version> 
    </dependency> 
    <dependency> 
    <groupId>org.json</groupId> 
    <artifactId>json</artifactId> 
    <version>20090211</version> 
    </dependency> 
    <dependency> 
    <groupId>commons-fileupload</groupId> 
    <artifactId>commons-fileupload</artifactId> 
    <version>1.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>1.4</version> 
    </dependency>   
    </dependencies> 
    <properties> 
     <org.springframework.version>3.0.2.RELEASE</org.springframework.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
    <build> 
    <finalName>${project.artifactId}</finalName> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId>   
     </plugin> 
    </plugins> 
    </build> 
</project> 

回答

7

这里的问题是,你正在使用的版本spring-web(3.1.1-RELEASE)是不符合spring-beans版本兼容,你”重新使用(3.0.2-RELEASE)。在堆栈的顶部,您可以看到NoSuchMethodError,这反过来触发BeanFactory not initialized...例外。

NoSuchMethodError引起,因为该方法调用XmlWebApplicationContext.loadBeanDefinitions()spring-web试图调用XmlBeanDefinitionReader.setEnvironment()spring-beans不3.0.2-RELEASE存在。但它确实存在于3.1.1-RELEASE中 - 因为setEnvironment从父项AbstractBeanDefinitionReader继承。

要解决,您可能最好将spring-beans jar升级到3.1.1-RELEASE。此jar的版本似乎在您的pom.xml中进行了参数化,并由文件中更下面的属性org.springframework.version控制。

16

此异常来由于您提供听者ContextLoaderListener

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

,但是你是不是为你的Spring配置文件提供context-param 。像applicationContext.xml 您必须提供以下代码段为您的配置

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>applicationContext.xml</param-value> 
</context-param> 

如果您提供基于Java Spring配置,意味着你是不是在那个时候,你必须提供下面的代码使用XML文件,spring配置:

<!-- Configure ContextLoaderListener to use AnnotationConfigWebApplicationContext 
instead of the default XmlWebApplicationContext --> 
<context-param> 
    <param-name>contextClass</param-name> 
    <param-value> 
    org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
    </param-value> 
</context-param> 

<!-- Configuration locations must consist of one or more comma- or space-delimited 
fully-qualified @Configuration classes. Fully-qualified packages may also 
be specified for component-scanning --> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>com.nirav.modi.config.SpringAppConfig</param-value> 
</context-param> 
2

我有这个问题,直到我有问题删除的项目从服务器的部署(在JBoss中开发Studio中,右键单击该服务器,并在服务器“删除”项目查看),然后执行以下操作:

  1. 重新启动JBoss EAP 6.1服务器时未部署任何项目。
  2. 服务器启动后,我将有问题的项目添加到服务器。

之后,只需重新启动服务器(在调试或运行模式下)通过选择服务器,而不是项目本身。

这似乎刷新任何以前的设置/状态/内存/无论是造成问题,我不再有错误。

1

在我的情况下,错误“BeanFactory未初始化或已关闭 - 调用'之前刷新'是前一个错误的结果,我没有注意到在服务器启动。 我认为这并不总是问题的真正原因。

0

我从3.2.8升级到3.2.18和从3.2.8升级到4.3.5时遇到了这个问题两次。在这两种情况下,这个错误是因为不同版本的弹簧模块

1

在我的情况下,这个错误是由于网络连接错误,我在日志中注意到。

0

在我的情况下,错误是有效的,这是由于使用try与资源

try (ConfigurableApplicationContext cxt = new ClassPathXmlApplicationContext(
        "classpath:application-main-config.xml")) {.. 
} 

它能够自动关闭,如果我想重用在其他豆类这种情况下应该不会发生流。

0

我有同样的错误,我没有对应用程序配置或web.xml进行任何更改。多次尝试恢复对代码的一些较小更改未清除异常。 最后它在重新启动STS后工作。

相关问题