ClassNotFoundException加载运行时编译的子类

时间:2013-07-07 21:24:44

标签: java java-compiler-api urlclassloader

我正在使用JavaCompiler在运行时从Web应用程序中编译CustomProcessor.java

package com.notmycompany;

import com.mycompany.Processor;
import com.mycompany.Event;

public class CustomProcessor extends Processor {

    @Override
    public void process( Event evt) {
        // Do you own stuff
        System.out.println( "My Own Stuff");
    }
}

编译顺利,我最终得到了一个我试图使用URLClassLoader加载的类文件

URL[] urls = new URL[]{ new URL("file://d:/temp/") }; 
URLClassLoader ucl = new URLClassLoader(urls);
Class clazz = ucl.loadClass("com.notmycompany.CustomProcessor");

问题是我在ClassNotFoundException Processor上遇到com.mycompany.Processor我正在申请中的其他地方使用(就像我知道的那样)。
我需要做什么才能在运行时看到Caused by: java.lang.ClassNotFoundException: com.mycompany.Processor at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 30 more

{{1}}

感谢。

1 个答案:

答案 0 :(得分:0)

使用带有完整类路径的URLClassLoader的问题 根据我使用的this question

URLClassLoader ucl2 = new URLClassLoader( new URL[] { new URL( "file://d:/temp/")}, urlClassLoader);
Class<?> clazz = ucl2.loadClass("com.notmycompany.CustomProcessor");