我有一种情况,我需要动态编译类。
以下是我的 java 类的组织结构。
// no package
public class A{
}
package test ;
public class B{
A obj;
//other java code
}
其中 A 是具有默认包的类,B 是具有包名 test 的类。B 具有 A 作为属性。
文件保存在各自的文件夹中(根据包)
我无法使用 JAVA Compiler API 编译它。
我有一种情况,我需要动态编译类。
以下是我的 java 类的组织结构。
// no package
public class A{
}
package test ;
public class B{
A obj;
//other java code
}
其中 A 是具有默认包的类,B 是具有包名 test 的类。B 具有 A 作为属性。
文件保存在各自的文件夹中(根据包)
我无法使用 JAVA Compiler API 编译它。
您不能从其他包中的类引用默认包中的类。自 2001 年以来就是这种情况。请参阅 Java 1.4 的发行说明。
您应该能够将类路径变量设置为选项。
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);
您可以在与此场景相关的 oracle 站点中找到一些已打开的错误