2012-05-25 4 views
4

그래서 난 그냥 구글 이클립스 플러그인을 사용하여 이클립스 인디고의 새로운 GAE 프로젝트를 생성하고, 나는 단지 다음 서블릿이 :객관화 NoClassDefFoundError를

public class TestServlet extends HttpServlet { 
    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws IOException { 
     resp.setContentType("text/plain"); 
     resp.getWriter().println("Hello, world"); 

     Objectify obj = ObjectifyService.begin(); 
     System.out.println(obj); 
    } 
} 

을하지만 내 브라우저에서 서블릿을 실행할 때 내가 얻을 :

java.lang.NoClassDefFoundError: com/googlecode/objectify/ObjectifyService 
    at com.fer.TestServlet.doGet(TestServlet.java:17) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:60) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:78) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:369) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:326) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
Caused by: java.lang.ClassNotFoundException: com.googlecode.objectify.ObjectifyService 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 32 more 

Obejctify 3.1을 사용하고 있지만 3.0 jar로 시도해도 위와 같은 오류가 발생하는 이유는 무엇입니까?

+1

않는 NoClassDefFoundError는 일반적으로 당신이 일치하지 않는 JAR 파일이 있음을 나타냅니다. –

답변

5

jar 파일을 WEB-INF/lib /에 넣고 빌드 경로에 라이브러리를 포함시켜야합니다. 그리고 단서를 들면, NoClassDefFound는하지만 나를 위해

+0

지금 당장 같은 문제가 발생합니다. 어떤'WEB-INF/lib'가 있어야 할 항아리입니까? 내가 아는 최소한 두 가지가 있습니다 : 하나는'/ build/exploded-app/WEB-INF/lib'이고 다른 하나는'.../src/main/webapp/WEB-INF'입니다. –

0

먼저 Objectify를 사용하십시오.

objectify jar를 포함해야합니다. 그것들은 appengine SDK의 일부가 아닙니다.

1

이 문제가 "LIB 전쟁/WEB-INF /"의 구아바 라이브러리를 추가하여 고정 된 런타임에 라이브러리가 컴파일시에 사용할 수 있음을 의미 예배 규칙서. 일반 구아바 병이 필요하며 -gwt 병은 필요하지 않습니다.

다운로드 : guava.jar