物化NoClassDefFoundError [英] Objectify NoClassDefFoundError

查看:149
本文介绍了物化NoClassDefFoundError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我刚刚在Eclipse Indigo中使用Google Eclipse插件创建了一个新的GAE项目,并且我只有以下servlet:

  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);


$ / code>

但是当我在浏览器上运行servlet时, :

  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)
。在com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35)在org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter
(ServletHandler.java:1157)
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:60)
at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.ja VA:1157)
在com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
在org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler。 Java的:在org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler在com.google.appengine.tools.development.StaticFileFilter.doFilter 1157)
(StaticFileFilter.java:122)
。 Java的:在org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler在com.google.appengine.tools.development.BackendServersFilter.doFilter 1157)
(BackendServersFilter.java:97)

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)
在org.m ortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
位于com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:78)
位于org.mortbay。 jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)维持在org.mortbay com.google.appengine.tools.development.JettyContainerService $ ApiProxyHandler.handle(JettyContainerService.java:369)

。 jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(在org.mortbay.jetty.HttpConnection $ RequestHandler.headerComplete HttpConnection.java:542)
(HttpConnection.java:923)在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.SelectChannelEnd Point.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool $ PoolThread.run(QueuedThreadPool.java:582)
引起:java.lang.ClassNotFoundException:com.googlecode。 objectify.ObjectifyService在java.net.URLClassLoader上
$ 1.run(未知源)$ java.util.AccessController.doPrivileged(Native方法)上的
在java.net.URLClassLoader.findClass上的
源)$ java.util.ClassLoader.loadClass(未知源)
com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass上的
(IsolatedAppClassLoader.java:176)$ java
。 lang.ClassLoader.loadClass(Unknown Source)
... 32 more

我是使用Obejctify 3.1,但尝试与3.0罐子,我似乎无法理解为什么我得到那个错误,任何想法?

您需要将jar文件放在WEB-INF / lib /下,并确保将该库包含在构建路径中。
对于线索,NoClassDefFound意味着该库在编译时可用,但不在运行时上


So I just created a new GAE project in Eclipse Indigo using the Google Eclipse Plugin, and I only have the following servlet:

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);
    }
}

But when I run the servlet on my browser I get:

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

I'm using Obejctify 3.1 but tried with the 3.0 jar too and I cant seem to understand why I get that error, any ideas?

解决方案

You need to put the jar file under WEB-INF/lib/ and make sure include that the library in your build path. And for the clue, NoClassDefFound means that the library is available on compile time but not on the runtime

这篇关于物化NoClassDefFoundError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆