0

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

問題は、アプリケーションの他の場所で使用している をヒットしClassNotFoundExceptionProcessorいることです (そこにあることがわかっているように)。実行時に表示さ
れるようにするには、何をする必要があり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

ありがとう。

4

1 に答える 1

0

これは、URLClassLoader完全なクラスパスでフィードを使用することの問題です。この質問
に従って、私は使用しました

URLClassLoader ucl2 = new URLClassLoader( new URL[] { new URL( "file://d:/temp/")}, urlClassLoader);
Class<?> clazz = ucl2.loadClass("com.notmycompany.CustomProcessor");
于 2013-07-07T22:48:17.670 に答える