我编写了一个生成两个类的代码,我将它们写入缓冲区并使用 JavaCompiler 编译它们。我的类在 .java 文件中是这样的;
public class A{
public A() { }
public String toString(){ return "A";}
}
和
public class B extends ArrayList<A> {
public B() {
super();
}
public void addItem(A a)
{
this.add(a);
}
public void print() {
this.print();
}
}
像这样的东西。
但是,类的名称是随机生成的,当我创建文件时,它会出现这样的错误;
symbol: class A
location: class B
./src/A.java:4: error: cannot find symbol
(第 4 行是“...extends ArrayList...”,并且 A 下有一个 ^ 符号)
我的代码生成器是这样编译的;
首先,我用我的 A 类型类模板填充缓冲区,然后像这样编译:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, f.getPath());
之后,我创建另一个缓冲区并用我的 B 类型类模板填充它,然后像这样编译;
System.out.println(f.getParentFile().getPath());
compiler.run(null, null, null, f.getPath());
f 是;
f = new File(("./src/" + name + ".java"));
我怎么解决这个问题?