2014-04-11 2 views
3

인터넷에서 많이 검색 한 이상한 오류가 있습니다. 왜 내가이 오류가 발생하는지 파악할 수 없었습니다. 스프링 jira에서 그 오류에 대한 설명을 발견했습니다. 나는 context:component-scanapplicationContext.xml에 넣었고 나는 com.sow.webservices 패키지에 5 개의 패키지를 정의했다. 내가 당신에게 전체 예외 추적을 보여 드리고자합니다스프링 컨텍스트 : 구성 요소 스캔 캐스팅 예외

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

: 내가 컨트롤러 클래스를 포함 컨트롤러 패키지를 추가 할 때 그러나, 나는

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

이것은 구성 요소 검사를 던졌습니다. 도움을 청합니다.

!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 오류를 제공합니다. Component scan과 관련하여 LocaleChangeInterceptor가 작동하지 않고 응용 프로그램을 국제화 할 수 없습니다.

+0

5 개의 패키지가 있고 필터가없는 경우 기본 패키지를 모두 언급하는 대신 기본 패키지를 "com.sow.webservices"로 유지하는 것이 좋습니다. – Prasad

+0

어떤 버전의 Spring을 사용하고 있습니까? Spring JIRA에 대해 언급 하셨고, 실제로,보고되고 수정 된 문제가 있습니다 (https://jira.spring.io/browse/SPR-11221). JIRA 문제를 해결 한 Spring 버전을 사용해 보셨습니까? –

+0

@Prasad, 아직 개발 중이므로 'com.sow.webservices'대신 'com.sow'아래에 sometrhing을 포함하는 anohter 패키지가있을 수 있습니다. AndreiStefan, 4.0.2를 사용하기 전에 예.하지만 4.0.3 – Emilla

답변

5

컨트롤러 중 하나가 @ControllerAdvice 주석을 사용하는 경우 컨트롤러를 점검하고 이상한 것은 오류입니다. 떨어져. 빨리! !!!

+0

wouw로 이동 한이 문제를 읽은 후. 당신 말이 맞아요. 그것은 효과가 있었다. 그러나 이번에는 @ControllerAdvice를 사용하는 컨트롤러에서 앱 예외를 catch 할 수 없으며 해당 메서드는 @ ExceptionHandler 주석을 사용합니다. – Emilla

+0

좋은. 이 약간의 차이가 내 오류가 고정 : java.lang.String; java.lang.String과 호환되지 않습니다. – matt1616

+1

하지만 @ControllerAdvice가 필요합니다. 동등한 스프링 XML 구성으로 대체하는 방법을 알고 있습니까? –