2012-07-14 40 views
0

我在光盘中有一个.class文件。我想用javaassist将它动态加载到jvm上。但它抛出异常。下面是我写的代码:如何使用classLoader动态加载类

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())); 

上有d .class文件:驱动器和EVN它抛出以下异常:

Exception in thread "main" javassist.NotFoundException: D:\ExampleImpl 
at javassist.ClassPool.get(ClassPool.java:436) 
at javaassist.Demo.main(Demo.java:24) 

如何在加载一个.class文件光盘动态到jvm并执行它?

+1

一个题外话:[disk vs disc](http://en.wikipedia.org/wiki/Spelling_of_disc) – 2012-07-14 10:07:46

回答

0

这里是不使用Eclipse的东西,我觉得这应该工作(稍作修改)

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; 
    } 
相关问题