NoClassDefFoundError是什么情况?

NoClassDefFoundError是什么情况?

https://img1.sycdn.imooc.com//climg/62b2e65209bf31e316761187.jpg

测试代码

@Test
public void selectAllTest() {
    SqlSession sqlSession = null;
    try {
        sqlSession = MyBatisUtils.openSession();
        List<Goods> goodsList = sqlSession.selectList("goods.selectAll");
        for (Goods g :
                goodsList) {
            System.out.println(g.getTitle());
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    } finally {
        MyBatisUtils.closeSession(sqlSession);
    }

}

Utils代码

public class MyBatisUtils {
    private static SqlSessionFactory sqlSessionFactory = null;

    static {
        try {
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            e.printStackTrace();
            // 初始化异常,抛出InInitializerError
            System.out.println("初始化异常");
            throw new ExceptionInInitializerError(e);
        }
    }

    // 获取sqlSession连接
    public static SqlSession openSession() {
        return sqlSessionFactory.openSession();
    }

    // 关闭sqlSession连接
    public static void closeSession(SqlSession sqlSession) {
        if (sqlSession != null)
            sqlSession.close();
    }
}

mybatis-config.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
<!--        是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
<!--    设置默认指向的数据库-->
    <environments default="dev">
        <!-- 配置环境,不同的环境不同的id名字-->
        <environment id="dev">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/babytun?useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="abc123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mappers.goods.xml"/>
    </mappers>
</configuration>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,goods.xml文件是否在mappers文件夹下,若在则建议将mybatis-config.xml配置文件中的mappers.goods.xml修改为mappers/goods.xml,再将jdbcUrl修改为url后重新测试运行试下。

祝学习愉快~

慕粉1555086949 提问者 2022-06-22 18:01:54

找到问题了

<property name="jdbcUrl" 写错了,要写成 name="url"

  • 提问者 慕粉1555086949 #1

    还有mappers.goods.xml也写错了

      <mapper resource="mappers.goods.xml"/>
    <mapper resource="mappers/goods.xml"/>

    改成mappers/goods.xml

    2022-06-22 18:05:21
  • 好帮手慕小小 回复 提问者 慕粉1555086949 #2

    同学你好,很棒哦,独立发现并解决了问题,继续加油!祝学习愉快~

    2022-06-22 18:08:37
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师