包扫描在jar文件中跳过映射器文件

时间:2015-08-13 19:48:27

标签: java mybatis

包扫描似乎正在跳过打包在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或命令行运行我的项目作为“爆炸的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,要么不知道向内部寻找好东西。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我能够在Mybatis用户组的帮助下解决问题。

当&#34;添加目录条目&#34;时会出现此问题。复选框未选中&#34; JAR文件规范&#34;在Eclipse中将项目导出为jar文件时执行步骤。确保选中复选框解决了问题。