Java使用ClassLoader抛ClassNotFoundException
来源:互联网 发布:matlab智能算法目录 编辑:程序博客网 时间:2024/05/16 18:40
Java使用ClassLoader抛ClassNotFoundException
在Java反射编程的学习中,有一次尝试使用URLClassLoader动态加载指定位置的class文件,我写了一段如下的代码:
URLClassLoader classLoader = new URLClassLoader(new URL[]{url}); Class<?> thisClass= classLoader.loadClass("com.Dapan.Example." + thisPath.getName().substring(0, thisPath.getName().lastIndexOf("."))); classMap.put(thisClass.getSimpleName().toLowerCase(), thisClass); classLoader.close();
程序编译没有问题,运行的时候也能成功加载到class文件。但是当我试图使用加载到的class文件创建对象,并传递给其他对象使用的时候,出现了问题。程序一直抛出ClassNotFoundException,可是明明已经加载成功了呀!这是为什么呢?
出现这种问题的时候,首先确认一下class的路径有没有写错,或者类名有没有错误。如果都没有错误,那么你可能犯了和我一样的错误:Java中,两个类对象必须是同一个ClassLoader加载,才能进行相应的赋值操作。如果ClassLoaderA加载的对象赋值给ClassLoaderB加载的对象,就会报错,具体抛什么异常取决于我们执行的操作。
所以,如果要使用URLClassLoader,应该在构造函数中指明需要传入的ClassLoader,例如
URLClassLoader classLoader = new URLClassLoader(this.class.getClassLoader(), new URL[]{url});
或者使用一种更加简单粗暴的方式:
URLClassLoader classLoader = (URLClassLoader)this.class.getClassLoader();
以上是我对自己遇到的问题的解决方式。当然,Java中抛ClassNotFoundException的情况有很多,需要进一步探索~
阅读全文
0 0
- Java使用ClassLoader抛ClassNotFoundException
- ClassLoader.loadClass() throws java.lang.ClassNotFoundException
- ClassLoader.loadClass() throws java.lang.ClassNotFoundException
- java classLoader体系结构使用详解
- java classLoader体系结构使用详解
- java classLoader体系结构使用详解
- 使用springMVC报错: java.lang.ClassNotFoundException:
- ClassLoader.loadClass()方法执行时提示'ClassNotFoundException'
- ClassLoader.loadClass()方法执行时提示‘ClassNotFoundException’
- ClassLoader使用
- ClassLoader 使用
- java ClassLoader
- JAVA classLoader
- java ClassLoader
- Java ClassLoader
- Java ClassLoader
- java ClassLoader
- java classloader
- 论文图片模糊问题的解决
- PHP函数篇之掌握ord()与chr()函数应用,处理汉字
- 《深入理解java虚拟机》学习笔记7——Java虚拟机类生命周期
- 关于服务器响应,浏览器请求的理解以及javaWeb项目的编码问题
- 神经网络入门之线性回归
- Java使用ClassLoader抛ClassNotFoundException
- MySql 创建只读账号
- linux实战~mysql的安装
- eclipse debug
- WebService之XFire和SOAP实例(基于JAVA)
- [FUNC]为字符串类添点料
- 表单自动填充样式修改
- wcf系列5天速成——第二天 binding的使用(2)
- Android平板横屏上的DrawerLayout