Java EE项目找不到Gson

发布于 2024-12-21 02:10:09 字数 4659 浏览 1 评论 0原文

我正在为类构建一个 Java EE 项目,并尝试使用 Google 的 Gson 包将 JSON 发送到 Servlet 内项目的另一部分。当我访问映射到上述 Servlet 的 URL 时,我希望看到原始 JSON,但是我得到了 ClassNotFoundException

import com.google.gson.Gson;
import edu.neumont.writingCenter.json.Event;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


@WebServlet("/user/appointments/json")
public class UserAppointmentsJsonServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, 
                         HttpServletResponse response) 
                                        throws ServletException, IOException {
        response.setContentType("application/json");
        PrintWriter out = response.getWriter();

        List<Event> events = new ArrayList<Event>();
        for (int i =0; i < 10; i++) {
            Event event = new Event();
            event.setId(i);
            event.setTitle("Test " + i);
            event.setAllDay(false);
            event.setStart(new Date());
            event.setEnd(new Date());
            events.add(event);
        }

        Gson gson = new Gson();
        out.print(gson.toJson(events));
        out.flush();

    }
}

java.lang.NoClassDefFoundError:com/google/gson/Gson 位于 edu.neumont.writingCenter.servlets.user.appointments.UserAppointmentsJsonServlet.doGet(UserAppointmentsJsonServlet.java:35) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:734) 处 javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 在 org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217) 在 edu.neumont.writingCenter.filters.SetRootFilter.doFilter(SetRootFilter.java:43) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 在 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 在 com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) 处 com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) 在 org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) 在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174) 在 com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828) 在 com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725) 在 com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019) 在 com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) 在 com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 在 com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 在 com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 在 com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 在 com.sun.grizzly.ContextTask.run(ContextTask.java:71) 处 com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 在 java.lang.Thread.run(Thread.java:662) 引起的: java.lang.ClassNotFoundException: com.google.gson.Gson 位于 org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1519) 在 org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1369) ... 33 更多

I'm building a Java EE project for class, and am attempting to use Google's Gson package to send JSON to another part of my project inside of a Servlet. When I visit the URL mapped to the aforementioned Servlet, I expect to see the raw JSON, however I get a ClassNotFoundException.

import com.google.gson.Gson;
import edu.neumont.writingCenter.json.Event;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


@WebServlet("/user/appointments/json")
public class UserAppointmentsJsonServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, 
                         HttpServletResponse response) 
                                        throws ServletException, IOException {
        response.setContentType("application/json");
        PrintWriter out = response.getWriter();

        List<Event> events = new ArrayList<Event>();
        for (int i =0; i < 10; i++) {
            Event event = new Event();
            event.setId(i);
            event.setTitle("Test " + i);
            event.setAllDay(false);
            event.setStart(new Date());
            event.setEnd(new Date());
            events.add(event);
        }

        Gson gson = new Gson();
        out.print(gson.toJson(events));
        out.flush();

    }
}

java.lang.NoClassDefFoundError: com/google/gson/Gson at
edu.neumont.writingCenter.servlets.user.appointments.UserAppointmentsJsonServlet.doGet(UserAppointmentsJsonServlet.java:35)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at
org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at
edu.neumont.writingCenter.filters.SetRootFilter.doFilter(SetRootFilter.java:43)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at
com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at
org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
at
com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
at
com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
at
com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
at
com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at
com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at
com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at
com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at
com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at
com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at
com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662) Caused by:
java.lang.ClassNotFoundException: com.google.gson.Gson at
org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1519)
at
org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1369)
... 33 more

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我的鱼塘能养鲲 2024-12-28 02:10:10

CNF 异常意味着您的 CLASSPATH 中缺少 JAR。尝试将其放入 WAR 文件的 WEB-INF/lib 中,重新打包并重新部署。

如果您遇到另一个 CNF 异常,请继续添加 JAR,直到它们消失。

CNF exception means you're missing a JAR from your CLASSPATH. Try putting it in the WEB-INF/lib of your WAR file, repackage, and redeploy.

If you get another CNF exception, keep adding JARs until they go away.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文