亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

maven工程寫了一個mybatis訪問數據庫。打成jar后,反射調用但是報mapper未注冊錯誤

maven工程寫了一個mybatis訪問數據庫。打成jar后,反射調用但是報mapper未注冊錯誤

慕尼黑8549860 2019-02-19 17:23:20
用mybatis搞了一個訪問數據庫的maven工程,然后打成jar包,在另外一個工程上用反射調用的方式訪問其中的方法。在myeclipse上沒有問題可以訪問到,但是在idea上出現問題。 public class Test1 { public static void main(String[] args) throws Exception { File file=new File("D:/class/ML/backer.jar"); URL url=file.toURI().toURL(); ClassLoader loader=new URLClassLoader(new URL[]{url}); try{ Class<?> cls=loader.loadClass("com.backer.controller.DataSource"); Object obj=cls.newInstance(); Method method=cls.getMethod("getAllData", String.class); ResponseBean rb=(ResponseBean) method.invoke(obj, new String("admin")); System.out.println(rb.getRetMap()); }catch(Exception e){ } } } 此代碼在myeclipse上運行是沒有錯誤的然后放在idea上運行則出現以下錯誤 Caused by: org.apache.ibatis.binding.BindingException: Type interface com.sunyard.backer.dao.AlgorithmDataMapper 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:745) at org.apache.ibatis.session.defaults.DefaultSqlSession.getMapper(DefaultSqlSession.java:292) at com.backer.controller.DataSource.getAllData(DataSource.java:31) ... 5 more 說我寫的mapper沒有被注冊到mybatis里。這個應該不是代碼的問題,網上有提到idea和myeclipse的某些差異,應該是某些開發工具的設置?另外jar是在myeclipse中開發的,也是在myeclipse中打的包。請教應該如何設置,或者有什么辦法?
查看完整描述

1 回答

?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

好氣,一層層的調試終于發現問題。最終的錯誤竟然和一開始描述的問題截然不同。。。
最開始以為是ide的問題,于是分別在myeclipse和idea里用了同樣的代碼(分別用反射的方法和導包buildpath的方法),發現導過包后反射的方法也可以用了,才發現原來不是idea的問題。
這樣酒吧問題鎖定在mapper文件未注冊上,然后在網上以該問題為關鍵詞搜索。網上結果是說可能文件大小寫名稱不一致,位置不對等等。可是在myeclispe中是可以運行的,于是再次把范圍縮小到jar包里。
用壓縮工具打開jar包,果然發現映射的XML文件沒有,最后問題縮小到打包環節上。
上網搜索maven打包,發現如果需要保留配置文件等內容需要在pom中配置的。(其實我已經配置過保留resources下的mybatisconfig.xml但是竟然忘記了映射的xml也是需要配置的。。。)
最后終于添加好配置后,運行出結果。
一波三折。。。

查看完整回答
反對 回復 2019-03-01
  • 1 回答
  • 0 關注
  • 1030 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號