target文件缺失,运行提示找不到xml文件的解决方法;cannot find resource+路径报错的解决方法

柯波峻
2023-12-01

当提示找不到xml文件等找不到文件的情况是,查看target文件夹里是否生成了对应文件,没有生成,可以有以下6种方法解决,从上往下进行,一个方法不行就试试另外一个。
1)Build—>Build Module’模块名’
2)右键pom.xml—>Maven—>Reload Project
3)点击界面右侧Maven -->Lifecycle—>点击clean—>再点击compile
4)File—>Invalidate Caches(清除缓存文件并重启)
5)手动把缺失的文件拷入target文件夹内
6)重启IDEA

更新
1.遇到,cannot find resource com.xxx.xxx.xxxxml 文件报错。
1)首先检查target里是否有这个文件,没有就按上面的6种方法修复,一次不出现可以多试几次,也可以关了IDEA再打开。
2)如果 target里也有这个文件,那可能是我刚遇到的问题了。找了半天,原来是mybatis.xml文件里mapper里的路径用了 ’ . ’ 点 做分割,应该换为 ’ / ’
例如

	<mappers>
<!--        第一个,错误示范,使用 . -->
<!--       <mapper resource="com.gys.dao.StudentDao.xml"/>-->
<!--        第二个,正确示范,使用 / -->
        <mapper resource="com/gys/dao/StudentDao.xml"/>
    </mappers>

需要注意的是,在写sql语句的xml文件里,mapper里的namespace用的是’ . ’
虽然原则上namaspace想写什么都行,只要在用SqlSession执行sql语句时传入的是namespace + ’ . '+要执行的sql语句的id即可,但namesapce标准的写法还是写:dao接口的全限定名称

<mapper namespace="com.gys.dao.StudentDao">
<!--   #{studentId}:占位符,表示从java程序中传入的数据-->
    <select id="selectStudentId" resultType="com.gys.domain.Student">
        select id,name,pwd from User where id=#{studentId}
    </select>
<!--    通过#{student对象的属性名}来传入固定位置-->
    <insert id="insertStudent">
        insert into User values(#{id},#{name},#{pwd})
    </insert>

</mapper>
 类似资料: