记录一次java的jar包导入路径问题,导致如下的报错信息:
java.lang.IllegalArgumentException: interface UserMapper is not visible from class loader
java.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,能帮到你!
转载于:https://blog.51cto.com/bronte/1834862
本文记录了一次因Java的Jar包导入路径重复导致的interface UserMapper is not visible from class loader错误,并分享了解决方案:只需保留Tomcat的Jar包并移除应用级别的Jar包。
9万+

被折叠的 条评论
为什么被折叠?



