2012-07-14 59 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; 
    } 
相關問題