无法使用JavaCompiler编译其他类中引用的默认包类

时间:2012-05-30 15:45:39

标签: java compilation 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编译它。

3 个答案:

答案 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)