JavaWeb以Maven整合Mybatis报错java.lang.NoClassDefFoundError(Web项目未能完全加载Maven下的依赖)

问题描述

        为完成学校课程一个javaweb的demo,想着对数据库的访问能够更加简洁,所以用了Mybatis。因为之前有过Springboot整合Mybatis经验,所以本以为事情会简单。在Junit的测试类中是能够正常对数据库进行CRUD。在Javaweb的Servlet类中调用数据访问的 接口编译没错。但实际对servlet发起请求时报错。-->运行时报错。

 

创建一个数据的访问DAO做为单例类。 通过类静态方法返回该单例对象。userMapper单一数据访问的实例。


public class OnlyStatement {

    
    private  OnlyStatement(){


    }


    private  static  class  RealMapper{

            private   static  userMapper userMapper;
        static {


            String resource = "mybatis-config.xml";
            InputStream inputStream = null;
            try {
                inputStream = Resources.getResourceAsStream(resource);
            } catch (IOException e) {
                e.printStackTrace();
            }
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);


            //获取SqlSession对象

            SqlSession session = sqlSessionFactory.openSession(true);


            //获取Mapper接口代理对象
                     userMapper = session.getMapper(userMapper.class);
        }






    }




     public  static  userMapper  MYgetInstance() {

        return RealMapper.userMapper;
     }


}

 

查看日志是在加载资源时  java.lang.NoClassDefFoundError

 

通过target(项目编译的生成结果)查看Mybatis和mysql的依赖jar是否已经添加到lib,这里就有个问题:

为什么maven的其他依赖的jar包(如Servlet ,JSTL)都能被添加到lib,而mysql和mybatis的jar包却无法添加?

产生该问题时的target生成目录下的lib目录: (缺失)

 我们用Maven来管理web项目的目的是为了添加Jar包可以直接以添加依赖的方式进行,而不需要手动去相应的网站下载,同时能够自动导入到当前项目。

解决方法

第一种方法:手动添加jar包 

此时重新部署

 

查看日志无报错,demo正常运行。

第二种方法:

自己捣鼓配置成功的一个方法:

然后重新编译部署,最终也使得web项目成功运行。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值