私はクラス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. コマンドラインで複数のパッケージのクラスパスを設定する方法は?
- 5. iosでキーフレームアニメーションを使用するときにアニメーションカーブを設定する方法は? UIViewののキーフレームアニメーションを使用したときのアニメーションカーブを設定する方法
- 6. ppを使用してperlソースをコンパイル
- 7. gulpを設定して.jsxと.tsファイルの両方をコンパイルする方法は?
- 8. rebarを使ってCソースをコンパイルするときの問題
- 9. プロジェクトのクラスパスをシーンビルダに設定する方法は?
- 10. 特定のターゲットを使用してLLVMをコンパイルする方法
- 11. Android Studioの別のモジュールのソースを使用してコンパイルする
- 12. build.xmlでWebサービスのクライアントのクラスパスを設定する方法
- 13. システムのライブラリディレクトリにCaucho ResinのJavaクラスパスを設定する方法
- 14. JBossのEAP openshift画像上のクラスパスを設定する方法
- 15. SBT依存関係の `test`設定のクラスパスを使用する
- 16. UIGraphicsImageRendererを使用するときの縮尺の設定方法
- 17. NetBeansを使用してクラスパスからlibを削除するjarファイルの設定
- 18. HTML2PDFを使用して横向きを設定する方法
- 19. sbtとjava-homeはデフォルトのjdkを使用してJavaソースをコンパイルします
- 20. Meepでソースの伝搬方向を設定する方法は?
- 21. R:rJavaプロセスのJavaクラスパスにlog4j.propertiesを設定する方法
- 22. WarlberでソースとターゲットのJavaリリースを設定する方法
- 23. QOAuth2AuthorizationCodeFlowとQOAuthHttpServerReplyHandlerを使用してredirect_uriを設定する方法
- 24. クラスパスを設定する
- 25. クラスパスを設定する
- 26. コンパイル設定用にファイルを除外する方法は?
- 27. gcc -c * .cを使用してソースをオブジェクトファイルにコンパイルする
- 28. cinとcoutのリダイレクト方法vsの設定を使用して
- 29. C#でDataGridViewのソースを動的に設定する方法は?
- 30. 設定管理を使用してJenkinsを設定する方法は?
Satheeshを投稿することができますこれは答えとして、 "コンパイララッパー(リンクは機能しません)を事前に感謝してもらえますか?" –
この記事のための製粉機に感謝しています。これは何年もの間苦労していました。 :) – flexinIT
ところで、 'JavaCompiler'の' classpath'オプションはワイルドカードを「理解」しません。したがって、それぞれの 'jar'をこの文字列に直接追加する必要があります。 – Andremoniy