在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java/ maven工程寫了一個(gè)mybatis訪問(wèn)數(shù)據(jù)庫(kù)。打成jar后,反射調(diào)用但是報(bào)ma

maven工程寫了一個(gè)mybatis訪問(wèn)數(shù)據(jù)庫(kù)。打成jar后,反射調(diào)用但是報(bào)mapper未注冊(cè)錯(cuò)誤

用mybatis搞了一個(gè)訪問(wèn)數(shù)據(jù)庫(kù)的maven工程,然后打成jar包,在另外一個(gè)工程上用反射調(diào)用的方式訪問(wèn)其中的方法。在myeclipse上沒(méi)有問(wèn)題可以訪問(wèn)到,但是在idea上出現(xiàn)問(wèn)題。

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上運(yùn)行是沒(méi)有錯(cuò)誤的
然后放在idea上運(yùn)行則出現(xiàn)以下錯(cuò)誤

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
    

說(shuō)我寫的mapper沒(méi)有被注冊(cè)到mybatis里。這個(gè)應(yīng)該不是代碼的問(wèn)題,網(wǎng)上有提到idea和myeclipse的某些差異,應(yīng)該是某些開發(fā)工具的設(shè)置?
另外jar是在myeclipse中開發(fā)的,也是在myeclipse中打的包。
請(qǐng)教應(yīng)該如何設(shè)置,或者有什么辦法?

回答
編輯回答
不二心

好氣,一層層的調(diào)試終于發(fā)現(xiàn)問(wèn)題。最終的錯(cuò)誤竟然和一開始描述的問(wèn)題截然不同。。。
最開始以為是ide的問(wèn)題,于是分別在myeclipse和idea里用了同樣的代碼(分別用反射的方法和導(dǎo)包buildpath的方法),發(fā)現(xiàn)導(dǎo)過(guò)包后反射的方法也可以用了,才發(fā)現(xiàn)原來(lái)不是idea的問(wèn)題。
這樣酒吧問(wèn)題鎖定在mapper文件未注冊(cè)上,然后在網(wǎng)上以該問(wèn)題為關(guān)鍵詞搜索。網(wǎng)上結(jié)果是說(shuō)可能文件大小寫名稱不一致,位置不對(duì)等等??墒窃趍yeclispe中是可以運(yùn)行的,于是再次把范圍縮小到j(luò)ar包里。
用壓縮工具打開jar包,果然發(fā)現(xiàn)映射的XML文件沒(méi)有,最后問(wèn)題縮小到打包環(huán)節(jié)上。
上網(wǎng)搜索maven打包,發(fā)現(xiàn)如果需要保留配置文件等內(nèi)容需要在pom中配置的。(其實(shí)我已經(jīng)配置過(guò)保留resources下的mybatisconfig.xml但是竟然忘記了映射的xml也是需要配置的。。。)
最后終于添加好配置后,運(yùn)行出結(jié)果。
一波三折。。。

2018年9月4日 18:37