ClassNotFoundException加载运行时编译的子类



我使用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");

问题是我在Processor上遇到了一个ClassNotFoundException,我正在应用程序的其他地方使用它(就像我在中所知道的那样)
要使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

谢谢。

这是一个使用带有完整类路径的URLClassLoader的问题
根据这个问题,我使用了

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

相关内容

  • 没有找到相关文章

最新更新