我遇到需要动态编译类的情况。
以下是组织我的java类的结构。
// no package
public class A{
}
package test ;
public class B{
A obj;
//other java code
}
其中A是具有默认包的类,B是包名为test的类。 B有A作为属性。
文件保存在各自的文件夹中(根据包装)
我无法使用JAVA Compiler API编译它。
答案 0 :(得分:2)
您不能从其他包中的类引用默认包中的类。自2001年以来就是这种情况。请参阅Java 1.4发行说明。
答案 1 :(得分:0)
您应该能够将classpath变量设置为选项。
List<String> optionList = new ArrayList<String>();
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
String path =....
optionList.addAll(Arrays.asList("-classpath",path ));
JavaCompiler.CompilationTask task = compiler.getTask(null, null, null,optionList,null,fileObjects);
答案 2 :(得分:-1)