java.lang.NoClassDefFoundError

java.lang.NoClassDefFoundError

# 具体遇到的问题

# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代

() Exception {
    SqlSession sqlSession = {
        sqlSession = MybatisUtils.()List<Student> list = sqlSession.selectList()(Student s:list){
            System..println(s.toString())}
    }(Exception e){
        e.printStackTrace()e}{
        MybatisUtils.(sqlSession)}
}


import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory = null;
    static {
        Reader reader = null;
        try {
            reader = Resources.getResourceAsReader("mybatis-config.xml");
        } catch (IOException e) {
            e.printStackTrace();
            throw new ExceptionInInitializerError(e);
        }
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
    }
    public static SqlSession openSqlSession(){
        return sqlSessionFactory.openSession();
    }
    public static void closeSession(SqlSession sqlSession){
        if (sqlSession!=null){
            sqlSession.close();
        }
    }
}


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="student">
    <select id="selectAll" resultType="com.imooc.mybatis.entity.Student">
        select * from student;
    </select>
</mapper>


<?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>
        <setting name="mapUnderscoreToCameCase" value="true"/>
    </settings>
    <environments default="dev">
        <environment id="dev">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/imooc?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai&amp;allowPublicKeyRetrieval=true"/>
                <property name="username" value="root"/>
                <property name="password" value="fan19960702"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mappers/student.xml"></mapper>
    </mappers>
</configuration>

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.imooc</groupId>
    <artifactId>mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>
    <repositories>
        <repository>
            <id>aliyun</id>
            <name>aliyun</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>


</project>

已经删除过target文件还是报错

码,可通过选择【代码语言】突出显示

正在回答

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

3回答

同学你好,1、拼接修改后的代码,小慕这边是可以正常运行的。

    2、同学还可以自己尝试来调整一下问题,比如:

如下报错信息是85行

http://img1.sycdn.imooc.com//climg/5f915f0409746b5910120420.jpg

然后查看85行并没有明显的问题,然后我们可以注释掉这行代码,比如:

http://img1.sycdn.imooc.com//climg/5f915f5909a2f45c06480102.jpg

重新运行代码,控制台就会有具体的报错信息,比如:

http://img1.sycdn.imooc.com//climg/5f915f96097e3bba13980535.jpg

如上所示,就可以定位到具体的报错是配置信息中mapUnderscoreToCameCase配置有误,这样就可以定位到问题了。

如上所示,这样同学就可以将自己具体的报错信息贴出,也便于小慕定位问题了。

好帮手慕小班 2020-10-22 15:36:19

同学你好,猜测同学的MybatisUtils有如下问题,在static中对sqlSessionFactory进行实例化,比如:


http://img1.sycdn.imooc.com//climg/5f91356b098a304b08780355.jpg

如上所示,修改后清理一下缓存,重新加载一下,在target目录中检查是否正确存在MybatisUtils,比如:

http://img1.sycdn.imooc.com//climg/5f91365e09b58a9603270231.jpg

  • 提问者 范不 #1
    存在 但是显示无法初始化该包下的MybatisUtils java.lang.NoClassDefFoundError: Could not initialize class com.imooc.mybatis.entity.MybatisUtils
    2020-10-22 16:15:06
好帮手慕小班 2020-10-22 15:10:18

同学你好,测试贴出代码,在mybatis-config.xml文件中,有一个单词写错,驼峰命名转换注意是mapUnderscoreToCamelCase而不是mapUnderscoreToCameCase,例如

http://img1.sycdn.imooc.com//climg/5f91304d090e140606600138.jpg

如上所示,修改后再来试试。

  • 提问者 范不 #1
    java.lang.NoClassDefFoundError: Could not initialize class MybatisUtils1 at MybatisTest.selectAll(MybatisTest.java:43) @Test public void selectAll() throws Exception { SqlSession sqlSession = null; try { sqlSession = MybatisUtils1.openSqlSession(); List<Student> list = sqlSession.selectList("student.selectAll"); for (Student s:list){ System.out.println(s.toString()); } }catch (Exception e){ e.printStackTrace(); throw e; }finally { MybatisUtils1.closeSession(sqlSession); } } 改过来了还是报错怎么回事呢
    2020-10-22 15:22:45
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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