-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 に答える