在下面的代码中,我使用动态生成一个类sun.tools.javac.Main.我将使用Reflection创建此类的新实例.问题是,我想避免使用Reflection来调用我为这个类定义的方法,所以我创建了一个ProxyInvoker,它引用了我在项目中定义的接口.为了让类加载器看到这一点,我将类路径添加到我的类加载器的Executable接口.在"编译"步骤中,我仍然收到一条错误,指出我的界面未找到.
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
public class MyClassGenerator {
static final String generatedClassName = "TestHello_" + System.currentTimeMillis();
static final String javaFileName = generatedClassName + ".java";
static URLClassLoader classLoader;
public static void main(final String args[])
throws MalformedURLException {
final ProxyInvoker proxy = new ProxyInvoker();
generateClass();
loadExecutableInterface();
if (compileClass()) {
System.out.println("Running " + generatedClassName + ":\n\n");
final Executable ex = createExecutable();
ex.execute();
}
else {
System.out.println(javaFileName + " is bad.");
}
} …Run Code Online (Sandbox Code Playgroud)