2011-08-19 3 views
0

GWT 모듈 (개발중인 작은 MVP 프레임 워크)을 GWT 개발 모드의 GWT 프로젝트에 통합하려고합니다. 부두 서버. 모듈 소스를 프로젝트에 직접 복사하면됩니다. 프로젝트에 모듈을 포함하는 jar를 포함하면 성공합니다.GWT 모듈 프로젝트를 '필수 프로젝트'로 포함 할 때 클래스를 찾을 수 없음 예외

그러나 내가 선호하는 것은 이클립스에서 주 프로젝트의 '필수 프로젝트'로 모듈을 포함하는 것입니다. 모듈과 프로젝트가 모두 활발하게 개발되고 있기 때문입니다. 왜 이런 일이에

WARNING: failed greetServlet: java.lang.NoClassDefFoundError: com/gmles/framework/client/AuthService 
Aug 19, 2011 7:33:22 PM com.google.apphosting.utils.jetty.JettyLogger warn 
WARNING: failed [email protected]12dd{/,/Users/logan/Documents/workspace/HCASchedule/war}: java.lang.NoClassDefFoundError: com/gmles/framework/client/AuthService 
Aug 19, 2011 7:33:22 PM com.google.apphosting.utils.jetty.JettyLogger warn 
WARNING: failed [email protected]: java.lang.NoClassDefFoundError: com/gmles/framework/client/AuthService 
Aug 19, 2011 7:33:22 PM com.google.apphosting.utils.jetty.JettyLogger warn 
WARNING: Error starting handlers 
java.lang.NoClassDefFoundError: com/gmles/framework/client/AuthService 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:151) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:151) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at org.mortbay.util.Loader.loadClass(Loader.java:91) 
at org.mortbay.util.Loader.loadClass(Loader.java:71) 
at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:73) 
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685) 
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) 
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250) 
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
at org.mortbay.jetty.Server.doStart(Server.java:224) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:185) 
at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:147) 
at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:219) 
at com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:86) 
at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:500) 
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1055) 
at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:804) 
at com.google.gwt.dev.DevMode.main(DevMode.java:309) 
Caused by: java.lang.ClassNotFoundException: com.gmles.framework.client.AuthService 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:151) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
... 48 more 

모든 아이디어 : 불행하게도, 나는 그래서 다음과 같은 오류가 콘솔에 인쇄 할 때 개발 모드에서 주요 프로젝트를 시작하려고하면?

+0

'ClassNotFoundException'과'NoClassDefFoundError'는 다릅니다. –

답변

0

WEB-INF/lib 폴더에 jar를 넣으십시오.

+0

모듈 프로젝트의 출력 디렉토리를 자체 WEB-INF 디렉토리로 변경하면 작동하지 않습니다. 같은 오류. 다른 프로젝트의 디렉토리에 직접 출력하도록 구성하고 싶지 않습니다. 모듈 소스를 기본 프로젝트에 드롭하고 거기에서 개발하면 그렇게 할 수 있습니다. 주 프로젝트는 이미 WEB-INF의 'classes'폴더로 출력되도록 구성되어 있습니다. 나는 이미 항아리를 떨어 뜨 렸습니다. 작동합니다. 모듈 프로젝트를 여러 프로젝트에서 동시에 사용할 수 있도록하고 싶습니다. – user903003

+0

답변을 업데이트하고 작동하지 않는다고 말한 것을 꺼 냈습니다. 나는 네가하는 말을 너무 좋아한다. 하지만 아직 방법을 찾지 못했습니다. 나는 메이븐이 당신이 말하는 것을 할 것 같아요. lib 폴더가 최신인지 확인하기 위해 빌드를 수행 할 때 실행되는 ANT 태스크를 작성할 수 있습니다. 또한 리눅스에서 build/lib 폴더로 심볼릭 링크를 만들 수도 있습니다. 하지만 지금까지 WEB-INF/lib에 항아리를 떨어 뜨리는 것 외에는 더 깨끗한 방법을 보지 못했습니다 :/ – Dave

+0

감사합니다. 나는 Maven과 약간 놀아 볼 것입니다. 나는 GWT 플러그인이 일식에 필요한 프로젝트 메카니즘을 손상시키는 그런 방식으로 클래스 패스를 그냥 썼을 것이라고 생각한다. – user903003

관련 문제