-5

我有一种情况,我需要动态编译类。

以下是我的 java 类的组织结构。

// no package 
public class A{
}

package test ;

public class B{
      A obj;
     //other java code
}

其中 A 是具有默认包的类,B 是具有包名 test 的类。B 具有 A 作为属性。

文件保存在各自的文件夹中(根据包)

我无法使用 JAVA Compiler API 编译它。

4

3 回答 3

2

您不能从其他包中的类引用默认包中的类。自 2001 年以来就是这种情况。请参阅 Java 1.4 的发行说明。

于 2012-05-30T22:17:20.540 回答
0

您应该能够将类路径变量设置为选项。

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);
于 2012-05-30T16:03:50.867 回答
-1

您可以在与此场景相关的 oracle 站点中找到一些已打开的错误

http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=9f121e41b450bfffffffffcc19db46db9bbc2?bug_id=4361575

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4114502

于 2012-05-31T05:47:01.813 回答