標籤:java.lang.illegalargumentexception: interface is not visible from class loader
記錄一次java的jar包匯入路徑問題,導致如下的報錯資訊:
java.lang.IllegalArgumentException: interface UserMapper is not visible from class loaderjava.lang.reflect.Proxy.getProxyClass0(Unknown Source)java.lang.reflect.Proxy.newProxyInstance(Unknown Source)MybatisConnectionFactory$MapperProxy.bind(MybatisConnectionFactory.java:81)MybatisConnectionFactory$MapperProxy.access$0(MybatisConnectionFactory.java:80)MybatisConnectionFactory.getSshfameMapper(MybatisConnectionFactory.java:55)UserDataProvider.getInstance(UserDataProvider.java:30)UserServiceImpl.login(UserServiceImpl.java:42)從代碼異常看: @SuppressWarnings("unchecked") private static <T> T bind(Class<T> mapperClazz, SqlSessionFactory sqlSessionFactory) { return (T) Proxy.newProxyInstance(sqlSessionFactory.getClass().getClassLoader(),new Class[]{mapperClazz}, new MapperProxy(mapperClazz, sqlSessionFactory)); }
是這句的問題sqlSessionFactory.getClass().getClassLoader()
實際上,並非如此,不明白為什麼java對於jar檔案的路徑,匯入包重複,總會出現莫名奇妙的報錯資訊,折磨我一天時間,在google上搜尋看到有人說是jar檔案路徑的問題
最後,說下的環境:我的java application是通過在eclipse的run configurations中配置,填寫classpath的時候,將 application 的lib下面,已經tomcat的bin,lib下面的jar包全部匯入到了classpath,最終導致的如上報錯。
解決這個問題很簡單,只要保留tomcat的jar即可,將application的jar包remove就能解決。
希望遇到類似問題的coder,能幫到你!
本文出自 “-=湖邊竹=-” 部落格,請務必保留此出處http://bronte.blog.51cto.com/2418552/1834862
java.lang.IllegalArgumentException: interface UserMapper is not visible from class loader