私はクラスjavax.tools.JavaCompiler
(jdk6)を使ってソースファイルをコンパイルしますが、ソースファイルはいくつかのjarファイルに依存しています。 javax.tools.JavaCompiler
のクラスパスを設定するには?javax.tools.JavaCompilerを使用してソースをコンパイルするときのクラスパスの設定方法は?
答えて
javax.tools.JavaCompiler#getTask()メソッドは、options
パラメータを受け取り、コンパイラオプションを設定できます。次message呼び出しプログラムのクラスパスにアクセスするためにそれらを設定する簡単な方法を説明します
あなたは jarファイル(複数可)について知っておく標準 javaファイルマネージャを設定する必要があります - あなたがコンパイラを使用これを行うには オプションの引数が必要です。
デフォルトでJavaコンパイラのオブジェクト は、デフォルトに関する用語のクラスパスの でブートクラスパス、extdirs とendorseddirsディレクトリの 場所を知っているようです。
あなたはjarファイル内のクラスを見つけ、その後 ます 標準のファイルマネージャ、上で渡されるJavaコンパイラ インスタンスのに呼び出しプログラムの 現在のクラスパスを追加する必要があります。
は、ここであなたが必要なすべての呼び出し元のプログラムを実行するときに、適切なクラスパスのセットを取得することです、私はthe compiler wrapper I wrote
List<String> optionList = new ArrayList<String>(); // set compiler's classpath to be same as the runtime's optionList.addAll(Arrays.asList("-classpath",System.getProperty("java.class.path"))); // any other options you want optionList.addAll(Arrays.asList(options)); JavaCompiler.CompilationTask task = compiler.getTask(out,jfm,diagnostics,optionList,null,jfos);
でそれを行う方法です。
最近同じ問題が発生しましたが、最後に2つの回避策が見つかりました。あなたは、どちらかのクラスパスを設定することにより、ここに掲載最初の答えが言う同じようにStandardJavaFileManager.setLocation(StandardLocation.CLASS_PATH、 "YOUR_CLASS_PATH")またはCompiler.getTask(ARG_0、ARG_1、ARG_2、CLASS_PATH_OPTIONSを呼び出す。
これを動作させるために、私は 'StandardJavaFileManager.setLocation(StandardLocation.CLASS_PATH、Arrays.asList(new File(classpath))));' –
- 1. javax.tools.JavaCompilerを使用して循環依存クラスをコンパイル
- 2. クラスパスでjsoup.jarを使ってソースファイルをコンパイルする方法は?
- 3. ローマを使用してアイテムごとにソースを設定する
- 4. iosでキーフレームアニメーションを使用するときにアニメーションカーブを設定する方法は? UIViewののキーフレームアニメーションを使用したときのアニメーションカーブを設定する方法
- 5. ppを使用してperlソースをコンパイル
- 6. rebarを使ってCソースをコンパイルするときの問題
- 7. HTML2PDFを使用して横向きを設定する方法
- 8. Android Studioの別のモジュールのソースを使用してコンパイルする
- 9. NetBeansを使用してクラスパスからlibを削除するjarファイルの設定
- 10. システムのライブラリディレクトリにCaucho ResinのJavaクラスパスを設定する方法
- 11. build.xmlでWebサービスのクライアントのクラスパスを設定する方法
- 12. WarlberでソースとターゲットのJavaリリースを設定する方法
- 13. クラスパスを設定する
- 14. XMLFileを使用して値を設定する方法は?
- 15. Javaの設定を使用して春にワッフルを設定する方法
- 16. EPPlusを使用してワークシートのページレイアウトブレークを設定する方法
- 17. xlwtを使用してテキストの色を設定する方法
- 18. ウェーブメーカーを使用してセンターレイアウトのページを設定する方法
- 19. C#でDataGridViewのソースを動的に設定する方法は?
- 20. Android ImageViewビットマップをソースとして設定
- 21. CircleCI設定の一部としてwebpackコンパイルを実行する方法
- 22. Rcppコンパイル引数を変更して設定する方法
- 23. JARファイルのクラスパスを設定
- 24. ASTを使用してテキストを関数としてコンパイルする方法は?
- 25. .protoファイルをコンパイルするためのSBTの設定方法は?
- 26. JARのクラスパスを設定する
- 27. htmlunitのクラスパスを設定する
- 28. ActionFilterを使用したレイアウトとしてのコンパイル済みビュー(RazorGenerator)の設定
- 29. spring mvcとjspを使用してメールサーバを設定する方法は?
- 30. SVN用のマージツールとしてkdiff3を設定する方法
Satheeshを投稿することができますこれは答えとして、 "コンパイララッパー(リンクは機能しません)を事前に感謝してもらえますか?" –
この記事のための製粉機に感謝しています。これは何年もの間苦労していました。 :) – flexinIT
ところで、 'JavaCompiler'の' classpath'オプションはワイルドカードを「理解」しません。したがって、それぞれの 'jar'をこの文字列に直接追加する必要があります。 – Andremoniy