2017-01-20 95 views
0

我正在開發一個項目(我想說「隨機」,因爲它有時會啓動,並且在服務器重新啓動後,它顯然沒有任何理由拋出異常)關於bean轉換服務的問題。當啓動服務器時,Spring bean拋出異常

Exception encountered during context initialization - cancelling refresh attempt 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'conversionService' defined in ServletContext resource [/WEB-INF/config/springmvc-config.xml]: Cannot create inner bean 'project.formatter.DateFormatter#3636796b' of type [project.formatter.DateFormatter] while setting bean property 'formatters' with key [0]; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [project.formatter.DateFormatter] for bean with name 'project.formatter.DateFormatter#3636796b' defined in ServletContext resource [/WEB-INF/config/springmvc-config.xml]; nested exception is java.lang.ClassNotFoundException: project.formatter.DateFormatter 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:313) 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122) 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedSet(BeanDefinitionValueResolver.java:394) 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:161) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:818) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537) 
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4772) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5196) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [project.formatter.DateFormatter] for bean with name 'project.formatter.DateFormatter#3636796b' defined in ServletContext resource [/WEB-INF/config/springmvc-config.xml]; nested exception is java.lang.ClassNotFoundException: project.formatter.DateFormatter 
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1351) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299) 
... 25 more 
Caused by: java.lang.ClassNotFoundException: project.formatter.DateFormatter 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1295) 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1147) 
at org.springframework.util.ClassUtils.forName(ClassUtils.java:250) 
at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:394) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1396) 
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1343) 
... 27 more 

,然後在Servlet中的異常:

Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'conversionService' defined in ServletContext resource [/WEB-INF/config/springmvc-config.xml]: Cannot create inner bean 'project.formatter.DateFormatter#3636796b' of type [project.formatter.DateFormatter] while setting bean property 'formatters' with key [0]; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [project.formatter.DateFormatter] for bean with name 'project.formatter.DateFormatter#3636796b' defined in ServletContext resource [/WEB-INF/config/springmvc-config.xml]; nested exception is java.lang.ClassNotFoundException: project.formatter.DateFormatter 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:313) 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122) 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedSet(BeanDefinitionValueResolver.java:394) 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:161) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:818) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537) 
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4772) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5196) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [project.formatter.DateFormatter] for bean with name 'project.formatter.DateFormatter#3636796b' defined in ServletContext resource [/WEB-INF/config/springmvc-config.xml]; nested exception is java.lang.ClassNotFoundException: project.formatter.DateFormatter 
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1351) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299) 
... 25 more 
Caused by: java.lang.ClassNotFoundException: project.formatter.DateFormatter 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1295) 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1147) 
at org.springframework.util.ClassUtils.forName(ClassUtils.java:250) 
at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:394) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1396) 
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1343) 
... 27 more 

gen 20, 2017 10:05:42 AM org.apache.catalina.core.StandardContext list enerStart 
GRAVE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'conversionService' defined in ServletContext resource [/WEB-INF/config/springmvc-config.xml]: Cannot create inner bean 'project.formatter.DateFormatter#3636796b' of type [project.formatter.DateFormatter] while setting bean property 'formatters' with key [0]; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [project.formatter.DateFormatter] for bean with name 'project.formatter.DateFormatter#3636796b' defined in ServletContext resource [/WEB-INF/config/springmvc-config.xml]; nested exception is java.lang.ClassNotFoundException: project.formatter.DateFormatter 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:313) 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122) 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedSet(BeanDefinitionValueResolver.java:394) 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:161) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:818) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537) 
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4772) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5196) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [project.formatter.DateFormatter] for bean with name 'project.formatter.DateFormatter#3636796b' defined in ServletContext resource [/WEB-INF/config/springmvc-config.xml]; nested exception is java.lang.ClassNotFoundException: project.formatter.DateFormatter 
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1351) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299) 
... 25 more 
Caused by: java.lang.ClassNotFoundException: project.formatter.DateFormatter 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1295) 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1147) 
at org.springframework.util.ClassUtils.forName(ClassUtils.java:250) 
at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:394) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1396) 
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1343) 
... 27 more 

gen 20, 2017 10:05:42 AM org.apache.catalina.core.StandardContext startInternal 
GRAVE: Error listenerStart 
gen 20, 2017 10:05:43 AM org.apache.catalina.core.StandardContext startInternal 
GRAVE: Context [/ProjectWorkMaven] startup failed due to previous errors 

它似乎無法找到類,但類實際上是在project.formatter.DateFormatter

這裏是spring-mvcconfig.xml豆:

<bean id="conversionService" 
    class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> 
    <property name="formatters"> 
     <set> 
      <bean class="project.formatter.DateFormatter"> 
       <constructor-arg type="java.lang.String" value="dd/MM/yyyy" /> 
      </bean> 
     </set> 
    </property> 
</bean> 

這裏的DateFormatter等級:

package project.formatter; 

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Locale; 

import org.springframework.format.Formatter; 

public class DateFormatter implements Formatter<Date> { 

private String datePattern; 
private SimpleDateFormat dateFormat; 

public DateFormatter(String datePattern) { 
    this.datePattern = datePattern; 
    dateFormat = new SimpleDateFormat(datePattern); 
    dateFormat.setLenient(false); 
} 


public String print(Date date, Locale locale) { 
    return dateFormat.format(date); 
} 


public Date parse(String s, Locale locale) throws ParseException { 
    try { 
     return dateFormat.parse(s); 
    } catch (ParseException e) { 
     // the error message will be displayed when using <form:errors> 
     throw new IllegalArgumentException(
       "invalid date format. Please use this pattern\"" 
         + datePattern + "\""); 
    } 
} 
} 

它給出了同樣的錯誤,以誰的工作與我的其他人,但他們只需要做一個maven clean來解決問題,對我來說是行不通的這種方法。 我做了一個乾淨的,然後重新啓動服務器,我得到了同樣的錯誤,唯一的辦法是重新從svn結帳,它工作了一段時間,然後開始給我這個問題了。 我不是在那個班上工作,我也沒有編輯springmvc-config.xml 我不知道該如何解決這個問題。 我檢查了springmvc-config,web.xml,我應該在哪裏嘗試解決這個問題? 謝謝大家的幫助。編輯: 它似乎給每個其他豆的錯誤。我評論了conversionService bean,它沒有提供更多的異常,並拋出bean dataSource的異常,評論這樣的bean,它在spring-security bean上發送錯誤。我不認爲由於依賴於這些豆類,我應該在哪裏吸菸?它在兩天前工作得很好,項目的配置沒有改變,現在我嘗試在虛擬機上籤出軟件包。編輯2: 它在VM上都不起作用。我無法理解爲什麼會出現這樣的問題。我也嘗試刪除該項目並重新檢查它,但它仍然無法工作,同樣的問題。 如果你們中的任何一個人都可以建議我如何看待它會很棒,我的團隊中沒有任何其他人遇到這個問題。

+0

您是否使用eclipse的熱部署? – Setu

+0

@Setu不,我沒有使用它。我只使用maven插件,svn插件和tomcat 8.0 –

回答

0

確保以下。

1)FormattingConversionServiceFactoryBean.java必須有名爲formattersproject.formatter.DateFormatter類型的屬性。

2)重建您的項目,然後重新部署到服務器。

注意:java.lang.ClassNotFoundException只有在服務器找不到yourClass.class時纔會發生。

+0

它不能在我的機器上工作,一切都設置完成。它工作到昨天沒有問題。它似乎無法加載任何bean。 –

+0

執行清理並構建到應用程序,然後清理您的服務器緩存。 –

+0

我做了很多次,它不能解決問題。我也嘗試刪除這個項目,並重新檢查它,同樣的問題。它在遇到問題時適用於其他人,而不適合我。 –

0

我解決了從服務器上刪除資源,在服務器上進行清理,然後清理項目,重新構建它並重新部署到服務器上的問題。 我仍然無法猜測爲什麼所有這些問題。 感謝您的幫助。

相關問題