2012-09-27 6 views
0

내가 이해하지 못하는 설정에 이상한 문제가 있습니다. 쉘 (즉, mvn gwt : run이 예상대로 작동 함)에서 정상적으로 실행되는 maven GWT 프로젝트에서 작업하고 있습니다.Eclipse + GWT + spring + maven : classnotfoundexception

그러나 Eclipse (m2e 및 gwt 플러그인 설치)를 실행하려고하면 classnotfoundexception이 발생합니다. 클래스는 엔티티 클래스이며 엔티티 관리자가 빌드 될 때 예외가 발생합니다. 나는 그 클래스가 persistence.xml에서 선언되었고 pom.xml이나 이클립스 빌드 경로에서 어떤 예외도 찾을 수 없다는 것을 확인했다.

위와 똑같은 프로젝트에서 다른 사람이 잘 작동합니다.

내 생각에 Eclipse에 구성 오류가 있지만 tweek을하지 않았습니다.

아이디어가 있으십니까?

이클립스 4.2
GWT 2.4
Maven을 3.0.3
봄 3.0.5

[WARN] Failed startup of context com.g[email protected]57790a{/,C:\Users\gere\Documents\netlight-workspace\NET2\target} 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManager' defined in ServletContext resource [/WEB-INF/database.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: netlight_db] class or package not found 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:543) 
at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) 
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220) 
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513) 
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448) 
at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:468) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
at org.mortbay.jetty.Server.doStart(Server.java:222) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:672) 
at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509) 
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068) 
at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811) 
at com.google.gwt.dev.DevMode.main(DevMode.java:311) 
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: netlight_db] class or package not found 
at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1386) 
at org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:1159) 
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1004) 
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:689) 
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) 
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225) 
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:308) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) 
... 30 more 
Caused by: java.lang.ClassNotFoundException: se.netlight.projectplusgui.server.dbo.BusinessArea 
at java.lang.ClassLoader.findClass(ClassLoader.java:358) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:352) 
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:337) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:247) 
at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:170) 
at org.hibernate.ejb.Ejb3Configuration.classForName(Ejb3Configuration.java:1302) 
at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1374) 
... 38 more 
[WARN] Nested in org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManager' defined in ServletContext resource [/WEB-INF/database.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: netlight_db] class or package not found: 
java.lang.ClassNotFoundException: se.netlight.projectplusgui.server.dbo.BusinessArea 
at java.lang.ClassLoader.findClass(ClassLoader.java:358) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:352) 
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:337) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:247) 
at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:170) 
at org.hibernate.ejb.Ejb3Configuration.classForName(Ejb3Configuration.java:1302) 
at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1374) 
at org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:1159) 
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1004) 
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:689) 
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) 
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225) 
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:308) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:543) 
at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) 
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220) 
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513) 
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448) 
at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:468) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
at org.mortbay.jetty.Server.doStart(Server.java:222) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:672) 
at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509) 
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068) 
at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811) 
at com.google.gwt.dev.DevMode.main(DevMode.java:311) 
+1

질문에 스택 추적을 포함하십시오. –

+0

스택 추적 – grekier

+0

"오래된"패키지가 교체되지 않은 것으로 보입니다. 찾을 수없는 클래스는 프로젝트에 새로 추가 된 클래스입니다. 그러나 그것을 포장하고 전쟁의 압축을 풀면 찾을 수 있습니다. Eclipse가 이전 패키지를 "캐싱"하는 것 같습니다. – grekier

답변

0

1) mvn clean install을 실행하고 호스트 모드를 시작하십시오. 그것이 작동한다면 이것은 당신의 프로젝트가 작동하기 위해서 몇몇 클래스/파일을 타겟에 복사해야한다는 것을 의미합니다.

2) Google GWT Webapp Launch를 사용하려는 경우 실행 폴더에서 인수를 확인하십시오. 당신은 시도해 봐야하고, 메이븐의 목표 설정, 버전 ID 유무에 관계없이

과 같이 정렬해야합니다. 3) 프로젝트에 versionid 접미어가있는 maven 프로젝트를 가져 왔는지 확인하려면 프로젝트 이름을 확인하십시오. 이로 인해 클래스 경로 문제가 발생할 수 있습니다.

+0

솔루션에 더 가까이 있지 않고이 모든 것을 시도했습니다 – grekier

+0

GPE 웹 응용 프로그램 실행 파일을 사용하고 있는지 여부를 업데이트 할 수 있습니까? maven 실행 파일을 사용하고 있다면 명령 행에서와 동일하게 실행되어야합니다. – SSR

+0

GPE에서 실행하고 실행중인 Maven으로 변경했습니다 (이전에 생각하지 않은 이유는 무엇입니까?) 나에게 맞는 아이디어를 주었기 때문에이 대답을 받아 들일 것입니다. – grekier

0

그것은 GWT-이클립스의 클래스 로딩 될 수있다. 기본적으로 Eclipse에서 GWT 애플리케이션을 실행할 때 lib 폴더의 모든 jar가 실행중인 애플리케이션 클래스 경로에 추가됩니다. 또한이 클래스 경로에없는 클래스를 Eclipse-GWT가 발견하면 시스템 클래스 경로를 검색합니다. 클래스를 찾으면 해당 jar도 실행중인 응용 프로그램 클래스 경로에 추가됩니다. 이것은 콘솔에 기록됩니다.

일반적으로 괜찮지 만 클래스 경로를 검색 할 때 문제가 발생합니다. Eclipse가 실행중인 클래스 경로에 jar를 추가하지 않으면 클래스를 찾을 수 없습니다. 해킹 할 수 있지만 그 이상은 아닙니다 (the answer to this question 참조).

나는 Maven에서 모든 Maven 의존성 jar가 시스템 classpath에 추가되고 있다고 생각한다. Spring과 JPA와 함께 사용하면 많은 클래스 패스 검색이 진행됩니다.

다른 사람들이 mechine에서 작동하는 이유는 설명하지 않습니다. 웹 응용 프로그램 라이브러리 폴더에 추가로 jar 파일이있는 경우가 아니면.

"올바르게"수정하는 방법에 대해서는 확실하지 않습니다. 나는 같은 위치에있다. 나는 작동하는 응용 프로그램 하나와 그렇지 않은 응용 프로그램과 매우 유사한 방식으로 구성되어있다. 이 질문을 찾은 이유이기도합니다!

+0

문제는 클래스를 찾을 수 없다는 것입니다 (다른 항아리가 아닌) 프로젝트의 자바 파일 중 하나임 – grekier

관련 문제