错误代码
package classLoader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
/**
* @author: Ordshine
* @date: 2023 - 04
* @description:
* @version: 1.0
*/
public class Test {
public static void main(String[] args) throws MalformedURLException, ClassNotFoundException, InstantiationException, IllegalAccessException {
URL url = new URL("http://127.0.0.1:8000");
URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{url});
Class<?> class00 = urlClassLoader.loadClass("Class0");
class00.newInstance();
}
}
报错信息如下 ClassNotFoundException
Exception in thread "main" java.lang.ClassNotFoundException: Class0
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at classLoader.Test.main(Test.java:35)
出现原因
是因为调用的class文件中,源码中存在
package classLoader;
标识了该类在classLoader包中
所以我这里这样写
Class<?> class00 = urlClassLoader.loadClass("Class0");
显然是不对的
可以改成
Class<?> class00 = urlClassLoader.loadClass("classLoader.Class0");
或者将源码中的package classLoader;
删除,然后再编译成字节码文件,就可以了