包扫描跳过 jar 文件中的映射器文件
package scanning skipping mapper files in jar file
包扫描似乎跳过了打包在 jar 文件中的映射器文件。
例如:
<mappers>
<!-- Doesn't work when I package my project as a JAR. -->
<package name="testmy.sqlmaps" />
<!-- Works even when mapper files are in a JAR file. -->
<!--mapper class="testmy.sqlmaps.TestMyMapper" /-->
<!--mapper class="testmy.sqlmaps.MySecondMapper" /-->
</mappers>
当我通过 Eclipse 或通过命令行作为 "exploded jar" 运行 我的项目时,一切正常,但是如果我从 Eclipse 将我的应用程序作为 jar 导出,然后 运行 它通过命令行然后我得到以下堆栈跟踪:
org.apache.ibatis.binding.BindingException: Type interface testmy.sqlmaps.TestMyMapper is not known to the MapperRegistry.
at org.apache.ibatis.binding.MapperRegistry.getMapper(MapperRegistry.java:47)
at org.apache.ibatis.session.Configuration.getMapper(Configuration.java:675)
at org.apache.ibatis.session.defaults.DefaultSqlSession.getMapper(DefaultSqlSession.java:250)
at testmy.dao.TestMyDAO.testMyBatisQuery(TestMyDAO.java:9)
at testmy.batch.TestMybatis.main(TestMybatis.java:17)
就好像 ResolverUtil
正在跳过我的应用程序 jar 或不知道在里面寻找好东西。
有什么想法吗?
在 Mybatis 用户组的热心帮助下,我得以解决问题。
在 Eclipse 中将项目导出为 jar 文件时,如果在 "JAR File Specification" 步骤中取消选中 "Add directory entries" 复选框,则会出现此问题。确保复选框被选中解决了问题。
包扫描似乎跳过了打包在 jar 文件中的映射器文件。
例如:
<mappers>
<!-- Doesn't work when I package my project as a JAR. -->
<package name="testmy.sqlmaps" />
<!-- Works even when mapper files are in a JAR file. -->
<!--mapper class="testmy.sqlmaps.TestMyMapper" /-->
<!--mapper class="testmy.sqlmaps.MySecondMapper" /-->
</mappers>
当我通过 Eclipse 或通过命令行作为 "exploded jar" 运行 我的项目时,一切正常,但是如果我从 Eclipse 将我的应用程序作为 jar 导出,然后 运行 它通过命令行然后我得到以下堆栈跟踪:
org.apache.ibatis.binding.BindingException: Type interface testmy.sqlmaps.TestMyMapper is not known to the MapperRegistry.
at org.apache.ibatis.binding.MapperRegistry.getMapper(MapperRegistry.java:47)
at org.apache.ibatis.session.Configuration.getMapper(Configuration.java:675)
at org.apache.ibatis.session.defaults.DefaultSqlSession.getMapper(DefaultSqlSession.java:250)
at testmy.dao.TestMyDAO.testMyBatisQuery(TestMyDAO.java:9)
at testmy.batch.TestMybatis.main(TestMybatis.java:17)
就好像 ResolverUtil
正在跳过我的应用程序 jar 或不知道在里面寻找好东西。
有什么想法吗?
在 Mybatis 用户组的热心帮助下,我得以解决问题。
在 Eclipse 中将项目导出为 jar 文件时,如果在 "JAR File Specification" 步骤中取消选中 "Add directory entries" 复选框,则会出现此问题。确保复选框被选中解决了问题。