初始化报错
来源: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在初始化的时候,我们使用了配置文件,那么很有可能是配置文件的问题。同学可以检查一下配置文件是否正常加载了。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
相似问题