Maven 项目报错 java.lang.ClassNotFoundException 的解决方案

有一在 IDEA 编写的 Maven 项目,通过 pom.xml 添加依赖后依然运行提示 java.lang.ClassNotFoundException,询问 ChatGPT 后得到解决方案,遂记录。

解决方案

点击右侧 Maven 选卡,双击打开项目名,双击选择 Lifecycle 下的 install,即可。

亦可打开下方 Terminal 选卡,运行命令

mvn install

背景

在 IDEA 里 File - Project Structure... 窗口添加 Maven 依赖,运行 Java Web 项目,报错:

例外情况

jakarta.servlet.ServletException: Servlet执行抛出一个异常
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

根本原因。

java.lang.NoClassDefFoundError: com/google/gson/JsonObject
    com.example.webstudy.ReturnJSON.doGet(ReturnJSON.java:24)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:668)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

根本原因。

java.lang.ClassNotFoundException: com.google.gson.JsonObject
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1449)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1257)
    com.example.webstudy.ReturnJSON.doGet(ReturnJSON.java:24)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:668)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

询问 ChatGPT,得到如下回复:

如果你使用了 Maven,那么需要先在 pom.xml 文件中添加 Gson 的依赖。

<dependencies>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.9</version>
    </dependency>
</dependencies>

然后,你需要重新构建你的 Maven 项目,让 Maven 下载并安装依赖库。

在 IDEA 中,你可以在右侧的 Maven 选项卡中找到 Lifecycle,在其中找到 install,右键点击运行,或者直接在命令行中运行 mvn install,让 Maven 安装依赖。这样做后,IDEA 应该就能找到 com.google.gson.JsonObject 这个类了。

添加新评论