初始化报错
来源: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文件吗,如果没有,同学可以清理缓存,重新编译一下。或者同学的包错了吗。

2、MyBatisUtils在初始化的时候,我们使用了配置文件,那么很有可能是配置文件的问题。同学可以检查一下配置文件是否正常加载了。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
相似问题