2014-09-24 3 views
0

jar 파일에 포함 된 프로젝트에서 beans를 가져 오는 것과 관련하여 this과 같은 질문을 읽었습니다. 하지만 내 프로젝트에서 (프로젝트 A를 호출하자) WEB-INF 폴더의 mvc-config.xml과 src/main/resources/spring 폴더의 application-config.xml (둘 다 Spring Web Maven 주형).jar에서 스프링 빈 가져 오기

mvc-config.xml에 bean을 정의하는 것과 같은 다른 구성이 필요하지 않은 지금까지는 클래스를 사용하여 bean, 서비스 및 저장소를 주석으로 정의하고 있습니다. 이 파일은 지금까지는 매우 스파르탄이었습니다 (아래 그림 참조). 나는 항아리에이 프로젝트를 팩 때, 또 다른 프로젝트 (프로젝트 B에서) 다오 구현을 autowire하기 위해 시도 (의이 프로젝트 B를 부르 자),

Severe: Context initialization failed 
java.lang.NoClassDefFoundError: com/mycompany/dao/EntityDao 

가 발생하면 오류를 가져옵니다. 이 특정 클래스는 네이티브 프로젝트에서 자동으로 실행되는 인터페이스 구현을 통해 정의되었습니다.

프로젝트 B에서 프로젝트 A를 제대로 가져올 수 없거나 프로젝트 A에서 @Repository, @Entity 및 다른 스프링 재료를 사용하려면 다른 종류의 정렬이 필요합니까? 프로젝트 B의 프로젝트 A에서 해당 서비스를 사용하려면 어떻게해야합니까? 감사! 발생 오류에 대한 추적을

  • 프로젝트 B의 MVC-config.xml에

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" 
        xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
    
    <context:component-scan base-package="com.mycompany"/> 
    
    <mvc:annotation-driven /> 
    
    <context:annotation-config/> 
    
    <mvc:default-servlet-handler/> 
    
    <import resource="classpath*:/WEB-INF/mvc-config.xml" /> 
    <import resource="classpath*:/spring/application-config.xml" /> 
    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
         <property name="prefix" value="/WEB-INF/view/"/> 
         <property name="suffix" value=".jsp"/> 
    </bean> 
    

  • 스택 :

Severe: Context initialization failed 
java.lang.NoClassDefFoundError: com/mycompany/EntityDao 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2521) 
    at java.lang.Class.getDeclaredMethods(Class.java:1845) 
    at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:571) 
    at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:489) 
    at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:473) 
    at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:534) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:663) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:593) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1394) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:385) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:354) 
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:97) 
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:609) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: java.lang.ClassNotFoundException: com.mycompany.EntityDao 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) 
    ... 33 more 
+1

여기에 잘못된 경로가있는 것처럼 보입니다. 먼저 프로젝트에 mvc-config.xml 파일이 있습니다.이 파일은 웹 프로젝트 프로젝트라는 것을 의미합니다. 다른 웹 프로젝트에서 사용 된 웹 프로젝트를 본 적이 없습니다. if 당신은 jar 파일로 WEB-INF 폴더가 있는지 확인하십시오. 런타임에 프로젝트 A jar를 사용할 수 있는지 확인하십시오. 이것은 maven 프로젝트이고 이것을 어떻게 실행하려고합니까? – varun

+0

@varun, 필자는 이전 웹 프로젝트에서 전체 작업 공간의 재구성으로 인해 "다운 그레이드"를 만들었습니다. 팁에서 출발하여, 나는 Spring Maven의 간단한 프로젝트에서 처음부터 똑같은 아키텍쳐를 테스트하기로 결정했다. 그리고 모든 것이 잘 작동했다. 실제로 그것은 항아리로 사용하기에는 적합하지 않은 오래된 프로젝트의 연상 웹 구조였습니다. 제발, 대답을 넣어주세요. 나는 그것을 받아 들일 것입니다. 감사. – Alex

답변

0

당신은 것 같다 여기에 잘못된 경로에, 모든 프로젝트 중 첫 번째 웹 프로젝트 프로젝트임을 암시하는 mvc-config.xml 파일이 있습니다. 프로젝트 A를 jar로 만들면 웹 프로젝트가 다른 웹 프로젝트에서 사용 된 것을 본 적이 없습니다. WEB-INF 폴더가 있는지 확인하십시오. 런타임에 프로젝트 A jar를 사용할 수 있는지 확인하십시오. 이것은 maven 프로젝트이고 이것을 어떻게 실행하려고합니까?

관련 문제