0

我在光盘中有一个 .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(ExampleImpl.class.getName());
        System.out.println();
    CtClass ctClasz = pool.get("***D:\\ExampleImpl***");
    ctClasz.addInterface(pool.get(MyInterface.class.getName()));

D: 驱动器上有一个 .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上并执行???

4

2 回答 2

0

Java中的动态类加载和重新加载

确实是一个很棒的学习教程。谢谢

于 2012-07-14T10:22:30.180 回答
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;
    }
于 2012-07-14T10:10:58.250 回答