在dao层用注解编写sql命令,测试时发现报错:
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.demo.emp2.test.EmpTest.main(EmpTest.java:15)
Caused by: org.apache.ibatis.exceptions.PersistenceException:
### Error building SqlSession.
### The error may exist in SQL Mapper Configuration
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.ClassNotFoundException: Cannot find class: com/demo/emp2/dao/IEmpDAO.java
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:54)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:38)
at com.newer.core.utils.SqlSessionFactoryUtil.createSessionFactory(SqlSessionFactoryUtil.java:33)
at com.newer.core.utils.SqlSessionFactoryUtil.<clinit>(SqlSessionFactoryUtil.java:19)
... 1 more
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.ClassNotFoundException: Cannot find class: com/demo/emp2/dao/IEmpDAO.java
at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:118)
at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:96)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:52)
... 4 more
Caused by: java.lang.ClassNotFoundException: Cannot find class: com/demo/emp2/dao/IEmpDAO.java
at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:200)
at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89)
at org.apache.ibatis.io.Resources.classForName(Resources.java:261)
at org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:367)
at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:116)
... 6 more
经检查,发现在configuration.xml定义映射文件里的注解为:
<mapper class="com/demo/emp2/dao/IEmpDAO.java"></mapper>
因为尝试过按住ctrl鼠标点击能进入到该class,就忽略该处错误。然而检查了各处都还是没有发现问题,于是尝试性地将该处修改为
<mapper class="com.demo.emp2.dao.IEmpDAO"></mapper>
问题得到解决。