Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

问题出现的环境背景及自己尝试过哪些方法

java.lang.NoClassDefFoundError:com/fasterxml/jackson/databind/ObjectMapper
请问这个问题怎么解决呢??????/
QQ截图20200522165414.jpg

我用debug,执行完就会出现这一句找不到class的异常,但是在导入的jar包里找得到这个ObjectMapper...

QQ截图20200522165445.jpg
这个是相关jar

本来导入的是jackson-databind-2.2.3.jar?,一直网上搜问题,有说版本问题的,然后就换了,最后还是不行,都是这个异常### 问题描述

相关代码

package cn.wei.web.servlet;


import com.fasterxml.jackson.databind.ObjectMapper;

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.util.HashMap;
import java.util.Map;

public class FindUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        ObjectMapper mapper = new ObjectMapper();
        System.out.println("ni shi tiancai ");
        //1.获取用户名
        String username = request.getParameter("username");

        //2.调用service层判断用户名是否存在

        //期望服务器响应回的数据格式:{"userExsit":true,"msg":"此用户名太受欢迎,请更换一个"}
        //                         {"userExsit":false,"msg":"用户名可用"}

        //设置响应的数据格式为json
        response.setContentType("application/json;charset=utf-8");
        Map<String,Object> jsons = new HashMap<>();
        if("tom".equals(username)){
            //存在
            jsons.put("userExsit",true);
            jsons.put("msg","此用户名太受欢迎,请更换一个");
        }else{
            //不存在
            jsons.put("userExsit",false);
            jsons.put("msg","用户名可用");
        }



        //并且传递给客户端
        mapper.writeValue(response.getWriter(),jsons);


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

你期待的结果是什么?实际看到的错误信息又是什么?

希望能运行成功..但是这个类不知道为什么找不到


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
317 views
Welcome To Ask or Share your Answers For Others

1 Answer

你这里的 NoClassDefFoundError 异常时在类加载器在自己的加载目录下找不到 ObjectMapper 类才报出来的。

而你工程应该是一个 JavaWeb 项目吧,跑在 Tomcat 容器中的那种 war 包。

每个 web 应用都有自己的 WebappClassLoader 类加载器,它默认负责加载的路径是/WEB-INF/lib/WEB-INF/classes目录中的类,所以你这里应该把 libs 改成 lib。

或者你可以去 tomcat 存放应用程序目录的 webapps 目录下面找到自己的这个项目,看看它里面包不包含 jackson 的依赖。

以上。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...