2013-11-21 42 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後工作。

相關問題