2009-06-23 7 views
1

GWT 및 GAE/J (Google AppEngine with Java)를 사용하여 응용 프로그램을 작성하려고합니다. 내 응용 프로그램에 대한 나는 DTO를 사용해야합니다. Pojo를 JDO 개체로 변환하려면 Dozer library을 사용하고 싶습니다. 내가 개체를 변환하려고 해요 그래서 나는 다음과 같은 오류 받고 있어요 :GAE/J의 Dozer 객체

Mapper mapper = new DozerBeanMapper(); 

방법 :

Jun 23, 2009 7:12:30 PM com.google.appengine.tools.development.ApiProxyLocalImpl log 
SEVERE: [1245784350843000] javax.servlet.ServletContext log: Exception while dispatching incoming RPC call 
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract com.athena.client.entities.Person com.athena.client.GreetingService.getPerson(com.athena.client.entities.Person)' threw an unexpected exception: java.lang.NoClassDefFoundError: org/dozer/DozerBeanMapper 
    at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:360) 
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:546) 
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:166) 
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:86) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:713) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) 
    at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) 
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:306) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) 
    at org.mortbay.jetty.Server.handle(Server.java:313) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396) 
    at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442) 
Caused by: java.lang.NoClassDefFoundError: org/dozer/DozerBeanMapper 
    at com.athena.server.GreetingServiceImpl.getPerson(GreetingServiceImpl.java:38) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:527) 
    ... 25 more 

을 그냥 서버 내부 매퍼 개체를 인스턴스화려고 할 때 나는 오류를 받고 있어요 이 문제를 해결할 수 있습니까?

답변

1

jar가 클래스 경로와 web-inf/lib 폴더에 있는지 확인하십시오.

+0

와우, 이건 내 문제를 해결했다. 너는 내 영웅이다! 고마워. – Maksim

2

저는 GAE/J에 익숙하지 않지만 오류 (NoClassDefFoundError)는 클래스 로더가 도저 클래스를 찾을 수 없다는 것을 분명히 알려줍니다. classpath에 있다고 확신합니까? 컨테이너의

Mapper mapper = new DozerBeanMapper();

외부 그냥 일반 명령 줄 static main 방법에서, : 동일한 라인을 실행하려고하면 어떻게됩니까 ?

+0

정적 메인 프로그램에서 잘 작동합니다. 나는 .properties 파일을 포함하는 것을 잊었다 고하는 한 가지 문제가 있었다. GWT + GAE/J 프로젝트에서도 같은 문제가 발생했습니다. : ( – Maksim