【问题标题】:Gson Class Imported by Maven is Not Found When Deployed on JSP and Servlet Java WebMaven导入的Gson类部署在JSP和Servlet Java Web上找不到
【发布时间】:2020-11-20 08:05:39
【问题描述】:

我通过maven导入Gson,其代码为

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>HerbTea</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
    <dependencies>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.4.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.4.0</version>
            <scope>compile</scope>
        </dependency>


    </dependencies>



</project>

但是,当我在 JSP sevlet 程序上运行我的程序时,我收到了

java.lang.NoClassDefFoundError: com/google/gson/Gson

我不知道为什么。

可以看到报错here

HTTP Status 500 – Internal Server Error
________________________________________
Type Exception Report
Message An exception occurred processing [/outcome.jsp] at line [21]
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.apache.jasper.JasperException: An exception occurred processing [/outcome.jsp] at line [21]

18:     <% WindowDisplay windowDisplay = (WindowDisplay) request.getSession().getAttribute("windowDisplay");
19:         System.out.println(session.getAttribute(reqSymptomParamKey));
20:         windowDisplay.getRecipeDisplay();
21:         List<Recipe> a = windowDisplay.getRecipeDisplay().retrieveCorrespondingRecipe((List<String>) session.getAttribute(reqSymptomParamKey));
22:         for (Recipe i : windowDisplay.getRecipeDisplay().retrieveCorrespondingRecipe((List<String>) session.getAttribute(reqSymptomParamKey))) {%>
23:     <p1>name:<%=i.getName()%> </p1>
24:     <p1>Corresponding Symptom: <%=i.getSymptomNameList()%></p1>


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:617)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:499)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    com.web.servlet.ServerServlet.doPost(ServerServlet.java:60)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause
javax.servlet.ServletException: java.lang.NoClassDefFoundError: com/google/gson/Gson
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:909)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:838)
    org.apache.jsp.outcome_jsp._jspService(outcome_jsp.java:178)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    com.web.servlet.ServerServlet.doPost(ServerServlet.java:60)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause
java.lang.NoClassDefFoundError: com/google/gson/Gson

根据调试器出现问题的那一行是这一行,因为没有找到Gson包中的任何类:

GsonBuilder gsonBuilder = new GsonBuilder();

有人可以帮我解决这个java.lang.NoClassDefFoundError: com/google/gson/Gson 问题吗?

【问题讨论】:

    标签: java json maven jsp gson


    【解决方案1】:

    我最终自己找到了问题的答案。感谢那些帮助我编辑问题的人。

    问题是我没有将 Maven libaray 添加到工件中。

    解决方案将进入 Intellij 中的 Project Structure->Artifacts->Output layout 并单击“Available Elements”面板下相应的 Maven 导入 jar 以将该 Gson libaray jar 添加到工件中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-24
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多