問題タブ [jsr199]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - javax.tools.JavaCompiler を使用してソースをコンパイルするときにクラスパスを設定するにはどうすればよいですか?
クラスjavax.tools.JavaCompiler
(jdk6) を使用してソース ファイルをコンパイルしますが、ソース ファイルは一部の jar ファイルに依存しています。のクラスパスを設定する方法はjavax.tools.JavaCompiler
?
java - JSR 199 Compiler API を使用してディレクトリ ツリー内の一連の Java ファイルをコンパイルする
Compiler API を使用して多くのファイルをコンパイルしようとしています。
ディレクトリ構造があるとします
すべての Java ファイルを検出し、すべてのディレクトリに再帰してすべての *.java ファイルを見つけることなく、すべてをコンパイルする方法はありますか?
編集:私がやろうとしているのは、ディレクトリツリーで取得したすべてのクラスをコンパイルすることです。これらのクラスは互いに独立しています。次に、クラスをロードし、これらのクラスのいくつかのオブジェクトをインスタンス化し、メソッドを呼び出します。どのクラスもメインを持つ必要はありません。
java - javax.tools は JDK に依存していますか?
JavaCompiler
いくつかのクラスを動的に作成するために使用したい。
パッケージのソース コードを見つけましたjavax.tools
が、実装がありません。インターネット上のいくつかの投稿では、に依存していると言われていますが、 JRE と関連がtools.jar
あるかどうかはわかりません。tools.jar
では、JDK がインストールされていない JRE 環境でプログラムを実行できますか?
別の質問です。 の実装の詳細は何ですか。コマンドJavaCompiler
を呼び出すための新しいプロセスを作成していますか?javac
ありがとう
java - JDK 1.6のJavaCompiler:クラスバイトをbyte []配列に直接書き込む方法は?
そこで私は最近、JDK1.6で利用可能な新しいJavaCompilerAPIについて知りました。これにより、実行中のコードから直接ファイルにコンパイルString
することが非常に簡単になります。.class
JavadocJavaSourceFromString
からソースを取得できます。
これは、現在の作業ディレクトリに 非常に便利にコンパイルsourceCode
されます。Foo.class
私の質問は:配列に直接コンパイルし、 I / Oをbyte[]
処理する煩わしさを完全に回避することは可能ですか?File
java - JavaCompilerによってコンパイルされたコードを実行する方法は?
JavaCompilerでコンパイルされたプログラムを実行する方法はありますか?[javax.tools.JavaCompiler]
私のコード:
今、私はそのプログラムを寿命1秒で実行し、文字列変数に出力を取得したいと思います。私がそれをすることができる方法はありますか?
java - 物理ファイルを作成せずに動的コンパイル
JavaコンパイラAPIを介してJavaクラスを動的に生成するチュートリアルに従います。コードは機能しますが、プログラムがコンパイル後にクラスファイルを作成することがわかります。
呼び出し後compilerTask.call();
にクラスファイルを作成しないことは可能ですか?はいの場合、それを行う方法は?
java - ランタイム コンパイル ソースのロード中に不正な形式の Java パッケージ クラス名
次のような Java ランタイム コンパイラがあります。
付随する単純なクラスローダーの例:
クラスをコンパイルしてロードすると、結果のクラスのパッケージ名がクラス名に連結されます。
これの出力は予想外に次のようになります。
ここでどこが間違っていますか?