Java 如何使用classLoader动态加载类
我的光盘中有一个.class文件。我想使用javaassist将其动态加载到jvm上。但这是个例外。以下是我编写的代码:Java 如何使用classLoader动态加载类,java,classloader,javassist,Java,Classloader,Javassist,我的光盘中有一个.class文件。我想使用javaassist将其动态加载到jvm上。但这是个例外。以下是我编写的代码: ClassPath cp=new ClassClassPath(ExampleImpl.class); System.out.println(cp.find(ExampleImpl.class.getName())); System.out.println("ExampleImpl.java"); System.out.println
ClassPath cp=new ClassClassPath(ExampleImpl.class);
System.out.println(cp.find(ExampleImpl.class.getName()));
System.out.println("ExampleImpl.java");
System.out.println(ExampleImpl.class.getName());
System.out.println();
CtClass ctClasz = pool.get("***D:\\ExampleImpl***");
ctClasz.addInterface(pool.get(MyInterface.class.getName()));
驱动器和evn上有一个.class文件,它引发以下异常:
Exception in thread "main" javassist.NotFoundException: D:\ExampleImpl
at javassist.ClassPool.get(ClassPool.java:436)
at javaassist.Demo.main(Demo.java:24)
如何将磁盘上的.class文件动态加载到jvm上并执行它???在没有Eclipse的情况下,这里有一些东西,我认为这应该可以工作(稍作修改)
类clazz;
试一试{
clazz=Demo.class.getClassLoader().loadClass(“full.package.name.to.MyClass”);
}catch(classnotfounde异常){
System.out.println(“没有这样的类”);
返回;
}
MyInterface worker;
试一试{
worker=(MyInterface)clazz.newInstance();
}捕获(实例化异常|非法访问异常e){
System.out.println(“创建实际实现时出错”);
返回;
}
确实是一个很好的学习教程。谢谢离题:
Class<?> clazz;
try {
clazz = Demo.class.getClassLoader().loadClass("full.package.name.to.MyClass");
} catch (ClassNotFoundException e) {
System.out.println("No such class.");
return;
}
MyInterface worker;
try {
worker = (MyInterface)clazz.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
System.out.println("Error creating actual implementation.");
return;
}