问答

java.lang.NoClassDefFoundError: 一个关于jackson的jar问题..

作者:admin 2021-08-05 我要评论

问题出现的环境背景及自己尝试过哪些方法 java.lang.NoClassDefFoundError:com/fasterxml/jackson/databind/ObjectMapper 请问这个问题怎么解决呢??????/ 我用de...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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

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

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

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

###

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

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

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

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

以上。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • java.lang.NoClassDefFoundError: 一个

    java.lang.NoClassDefFoundError: 一个

  • 正则匹配 【=a=b==c&gt;=d&lt;

    正则匹配 【=a=b==c&gt;=d&lt;

  • 全局安装react-native-cli后在其他路径

    全局安装react-native-cli后在其他路径

  • antd的layout的slider样式问题

    antd的layout的slider样式问题

腾讯云代理商
海外云服务器