2012-01-07 5 views
1

Tomcatのクラスパスにpublic apisを持つクラスを参照するJavaコードスニペットが動的に生成されています。私は、リフレクションを通してこれらのクラスのパブリックapis(メソッド)を正しく識別することができましたが、この情報を使用してJavaコードを生成した後、Java Compiler APIでコンパイルすることになりました。Tomcatのクラスパスにアクセスしてコードスニペットを動的にコンパイルする

これは可能ですか? Tomcatがサーブレットを何とかロードしてJava Compiler APIに渡すために使用したクラスパスを取得する必要がありますか?あなたがクラスパスに合格する必要があります

アンディ

答えて

1

。これコードクラスパスは、あなたがcompiler.getTask

たCompilationTaskタスク=コンパイラにオプションを渡すもの

List<String> options = new ArrayList<String>(); 
options.add("-classpath"); 
StringBuilder sb = new StringBuilder(); 
URLClassLoader urlClassLoader = (URLClassLoader) Thread.currentThread().getContextClassLoader(); 
for (URL url : urlClassLoader.getURLs()){ 
    sb.append(url.getFile().replace("%20", " ")).append(File.pathSeparator); 
} 
options.add(sb.toString()); 

を取得ありません。 getTask(writer、memoryManager、diagnostics、オプション、クラス、コンパイル単位);

関連する問題