BeanFactory未初始化或已关闭 – 之前调用’刷新’

这是我的错误:

我收到此错误,任何人都可以帮助我。

> 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:

  4.0.0 com.paypal.palette FLPalette 0.0.1-SNAPSHOT war FLPalette http://maven.apache.org   mysql mysql-connector-java 5.1.5   org.springframework spring-orm ${org.springframework.version}   org.springframework spring-beans ${org.springframework.version}   org.springframework spring-jdbc ${org.springframework.version}   wsdl4j wsdl4j 1.6.3 test   junit junit 4.8.1 jar compile   org.springframework spring-web 3.1.1.RELEASE jar compile   org.springframework spring-core 3.1.1.RELEASE jar compile   log4j log4j 1.2.14 jar compile   org.springframework spring-tx 3.1.1.RELEASE jar compile   jstl jstl 1.1.2 jar compile   taglibs standard 1.1.2 jar compile   org.springframework spring-webmvc 3.1.1.RELEASE jar compile   org.springframework spring-jdbc 3.1.1.RELEASE jar compile   org.springframework.security spring-security-core 3.1.1.RELEASE jar compile   org.springframework spring-aop 3.1.1.RELEASE jar compile   org.springframework.security spring-security-config 3.1.1.RELEASE jar compile   org.springframework.security spring-security-web 3.1.1.RELEASE jar compile   org.springframework.security spring-security-ldap 3.1.1.RELEASE jar compile   com.jcraft jsch 0.1.50   javax.servlet servlet-api 2.5   org.springframework.security spring-security-taglibs 3.1.0.RELEASE   org.json json 20090211   commons-fileupload commons-fileupload 1.2.1   commons-io commons-io 1.4    3.0.2.RELEASE UTF-8   ${project.artifactId}   org.apache.maven.plugins maven-compiler-plugin 2.3.2  1.6 1.6    maven-war-plugin     

此exception是由于您提供了侦听器ContextLoaderListener

  org.springframework.web.context.ContextLoaderListener  

但是您没有为spring配置文件提供context-param 。 like applicationContext.xml您必须为您的配置提供以下代码段

  contextConfigLocation applicationContext.xml  

如果您提供基于java的弹簧配置,则意味着您当时没有使用xml文件进行弹簧配置,您必须提供以下代码:

   contextClass  org.springframework.web.context.support.AnnotationConfigWebApplicationContext     contextConfigLocation com.nirav.modi.config.SpringAppConfig  

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

引发NoSuchMethodError是因为spring-web的方法调用XmlBeanDefinitionReader.setEnvironment()试图在spring-beans调用XmlBeanDefinitionReader.setEnvironment() ,这在3.0.2-RELEASE中不存在。 但它存在于3.1.1-RELEASE中 – 因为setEnvironment是从父AbstractBeanDefinitionReaderinheritance的。

要解决这个问题,你可能最好将spring-beans jar升级到3.1.1-RELEASE。 这个jar的版本似乎在你的pom.xml中被参数化,并且由文件中的org.springframework.version属性控制。

我遇到了这个问题,直到我从服务器的部署中删除了有问题的项目(在JBoss Dev Studio中,右键单击服务器并在Servers视图中“删除”项目),然后执行以下操作:

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

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

这似乎刷新了任何先前的设置/状态/内存/导致问题的任何东西,我不再得到错误。

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

我从3.2.1升级到3.2.18,从3.2.8升级到4.3.5,我遇到过两次这个问题。 在这两种情况下,此错误都是由于弹簧模块的版本不同

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

在Spring框架里面springframework初始化Repository或者控制器注释,同一个类名只能存在一个默认实例,可以设置值名

在我的情况下,错误是有效的,这是由于使用try with resource

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

如果我想在其他bean中重用这个上下文,它会自动关闭不应该发生的流。

我有同样的错误,我没有对应用程序配置或web.xml进行任何更改。 多次尝试将某些较小的更改还原为代码并未清除exception。 最后它在重启STS后起作用。