2014-04-11 93 views
3

我有一個奇怪的錯誤,我搜索了很多在互聯網上。我無法弄清楚爲什麼我得到這個錯誤。我在春季傑拉發現了一些關於這個錯誤的解釋。我在applicationContext.xml中有context:component-scan,我在com.sow.webservices包中定義了5個包。然而,當我添加了控制器封裝包括控制器類,我拋出春天的上下文:組件掃描鑄造異常

Error occured processing XML '[Ljava.lang.String; cannot be cast to java.lang.String'. See Error Log for more details 

這是組件掃描:

<context:component-scan base-package="com.sow.webservices.aop, 
              com.sow.webservices.exceptions, 
              com.sow.webservices.models, 
              com.sow.webservices.services, 
              com.sow.webservices.controller"> 

我想向你展示整個異常痕跡。感謝您的幫助。

!ENTRY org.springframework.ide.eclipse.beans.core 1 0 2014-04-11 18:07:39.996 
!MESSAGE Error occured processing '/SOW_WS/src/main/webapp/WEB-INF/applicationContext.xml' 
!STACK 0 
java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String 
    at org.springframework.context.annotation.AnnotationBeanNameGenerator.determineBeanNameFromAnnotation(AnnotationBeanNameGenerator.java:92) 
    at org.springframework.context.annotation.AnnotationBeanNameGenerator.generateBeanName(AnnotationBeanNameGenerator.java:70) 
    at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:247) 
    at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:85) 
    at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74) 
    at org.springframework.ide.eclipse.beans.core.internal.model.namespaces.DelegatingNamespaceHandlerResolver$ElementTrackingNamespaceHandler.parse(DelegatingNamespaceHandlerResolver.java:177) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1427) 
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ErrorSuppressingBeanDefinitionParserDelegate.parseCustomElement(BeansConfig.java:1400) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1417) 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:187) 
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ToolingFriendlyBeanDefinitionDocumentReader.doRegisterBeanDefinitions(BeansConfig.java:1330) 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:110) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:494) 
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$2.registerBeanDefinitions(BeansConfig.java:402) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:335) 
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$2.loadBeanDefinitions(BeansConfig.java:388) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303) 
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$3.call(BeansConfig.java:445) 
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$3.call(BeansConfig.java:1) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
    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) 

即使XML拋出此異常,我可以運行我的應用程序,但是當我刪除com.sow.webservices.controller它停止顯示有錯誤的跡象,但它給了404錯誤。由於我在組件掃描時遇到問題,所以LocaleChangeInterceptor無法正常工作,我無法國際化我的應用程序

+0

想一想,如果這些是你有的5個包並且沒有過濾器,爲什麼不把基礎包保存爲「com.sow.webservices」而不是全部提到呢? – Prasad

+0

你使用的是什麼版本的Spring?你提到了Spring JIRA,是的,確實存在一個報告和解決的問題(https://jira.spring.io/browse/SPR-11221)。您是否嘗試過修復JIRA問題的Spring版本? –

+0

@Prasad,它仍在開發中,我可能在'com.sow'而不是'com.sow.webservices'下面有anohter包。 AndreiStefan,是在我使用4.0.2之前,但是在看完那個問題之後,我在4.0.3 – Emilla

回答

5

檢查您的控制器,如果其中一個使用註釋@ControllerAdvice嘗試註釋掉它,奇怪的是錯誤發生遠。 FREAKY !!!!

+0

wouw上移動了。你是對的。有效。但是這次我的應用程序異常不能被使用@ ControllerAdvice的控制器捕獲,並且它的方法使用@ ExceptionHandler註解。 – Emilla

+0

不錯。這解決了我的錯誤,只是略有不同:java.lang.String;不兼容java.lang.String – matt1616

+1

好的,但我們需要@ControllerAdvice,你知道如何用等價的Spring XML配置替換它嗎? –