初始化报错

来源:5-2 自由编程

周鸿宁

2020-03-20 11:15:22

<?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>

    <!--flushCache="true"在sql执行后强制清空缓存-->
    <insert id="insert" parameterType="com.imooc.mybatis.entity.Student" flushCache="true">
        INSERT INTO student(reg_no, name, sex, age, grade, major)
        VALUES (#{reg_no} , #{name} , #{sex}, #{age}, #{grade}, #{major})
        <selectKey resultType="Integer" keyProperty="id" order="AFTER">
        select last_insert_id()
        </selectKey>
    </insert>
</mapper>
package com.imooc.ibatis;

import com.imooc.mybatis.entity.Student;
import com.imooc.mybatis.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class Testor {

    @Test
    public void testSelectAll(){
        SqlSession session=null;
        try {
            session= MyBatisUtils.openSession();
           List<Student>list =session.selectList("student.selectAll");
            for(Student s :list){
                System.out.println(s.getName());
            }
        }catch (Exception e){
            throw e;
        }finally {
            MyBatisUtils.closeSession(session);
        }
    }
    public void testInsert(){
        SqlSession session=null;
        try{
            session=new MyBatisUtils().openSession();
            Student student= new Student();
            student.setRegNo(2020031901);
            student.setName("testStudent");
            student.setSex("male");
            student.setAge(25);
            student.setGrade("大二");
            student.setMajor("computer");
            int num=session.insert("student.insert",student);
            session.commit();
            System.out.println(student.getId());
        }catch(Exception e){
           if(session!=null){
               session.rollback();
           }throw e;
        }finally {
            MyBatisUtils.closeSession(session);
        }
    }

}

报错:

java.lang.NoClassDefFoundError: Could not initialize class com.imooc.mybatis.utils.MyBatisUtils


at com.imooc.ibatis.Testor.testSelectAll(Testor.java:24)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.base/java.lang.reflect.Method.invoke(Method.java:564)

at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)

at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)

at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)

at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)

at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)

at org.junit.runners.ParentRunner.run(ParentRunner.java:363)

at org.junit.runner.JUnitCore.run(JUnitCore.java:137)

at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)

at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)

at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)

at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)




Process finished with exit code 255


写回答

1回答

好帮手慕小班

2020-03-20

同学你好,NoClassDefFoundError是没有加载到这个类。这个类在初始化的时候出现了问题。

    1、同学可以在自己的target目录中检查一下MyBatisUtils是否正常编译了,有对应的class文件吗,如果没有,同学可以清理缓存,重新编译一下。或者同学的包错了吗。

http://img.mukewang.com/climg/5e7483d2091d0c5202620180.jpg

    2、MyBatisUtils在初始化的时候,我们使用了配置文件,那么很有可能是配置文件的问题。同学可以检查一下配置文件是否正常加载了。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

0

0 学习 · 8016 问题

查看课程