問題タブ [java-compiler-api]
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 を使用するときに JVM ヒープ領域を設定する
JavaCompiler API を使用して、Java ソース コードをコンパイルしています。ただし、 OutOfMemoryError 例外が発生しています。-Xmx1G オプションを使用しようとしましたが、機能しません:
正しいオプションを設定してヒープサイズを正常に増やした人はいますか? 私も失敗しました:
Xmx1G
-Xmx1G
J-Xmx1G
-J -Xmx1G
-J Xmx1G
java - Mac OS x 7 で Grails が古い JVM コンパイラを使用しているのはなぜですか?
MacOS×10.7
サービスの1つでJava 1.7 NIOを使用したいのですが、次のものが得られました。
一体何が!?Ok。コードでJavaバージョンをチェックしています:println
そして最後に私は見る
またはより具体的に
次のようになります。
classpath - ear 内の jar を参照する Classpath で JavaCompiler を使用する
JBoss サーバーにデプロイされたエンタープライズ アーカイブ (ear) がクラスを動的にコンパイル (および実行) する必要があるプロジェクトに取り組んでいます。私はこれを行うために JavaCompiler クラスを使用しています - 複雑なのは、コンパイルされるクラスが ear 内の ejb jar 内に含まれるいくつかのクラスへの参照を持っているという事実から生じます。
展開された ear が展開時に「展開」されている場合、これは問題ではないため、アーカイブではなく単なるディレクトリです。この場合、コンパイラの -classpath オプションで必要な jar を指定でき、コンパイルが機能します。大丈夫。残念ながら、私が使用しているシステムの制約により、これらの耳を「展開」して展開することは受け入れられる解決策ではなく、アーカイブにラップされている場合、コンパイラは必要な jar を「見る」ことができないようです。
問題の耳から動的コンパイルが行われているため、システムのクラスローダーが必要なjarの内容にアクセスできる場合、システムクラスによってロードされたクラスを使用するようにコンパイラーに指示できる方法はありますか?ローダ?
これは冗長な質問だと思いますが、何か助けていただければ幸いです。
ありがとう
java - Eclipse プラグインの実行時に Java クラスをコンパイルする
私はここで非常に厄介な状況にいます。.java ファイルを .class ファイル (または jar ファイル) に「コンパイル」する必要がある「Eclipse プラグイン」を開発しています。
次のようなことを行うために、 Java Compiler APIを使用しようとしています。
問題は、呼び出す_sjfm = _javaCompiler.getStandardFileManager(null, null, null);
と NullPointerException が発生することです。これは、JDK を実行していないときに「予期される」動作であるためです (このバグ レポートを参照してください) 。
このStackOverflow の投稿は何らかの形で私を助けてくれましたが、発行可能でなければならない Eclipse プラグイン内から Java ファイルをコンパイルする正しい方法は何でしょうか?
- 代替の「コンパイラ」を使用し、jar を含めて使用するだけですか?
- tools.jar (JDK フォルダーにあります) をプラグインに含め、動的にロードし、そこからコンパイルしますか?
- 私が考えることができない他の解決策
あなたは何をお勧めします ?
eclipse - プログラムで JDT コンパイラを使用するにはどうすればよいですか?
JDT を使用して Java クラスをコンパイルします。BatchCompiler は文字列を返しますが、列と行の情報に関する問題/エラーの配列が必要です。コンパイラ.コンパイル(ユニット); エラーをprintwriterに出力します。compiler.resolve(unit)はまさに私が望むことを行いますが、コンパイルできるJavaファイルは1つだけです。
この方法でコンパイラ オブジェクトを作成しました。
そして、ファイル名とファイルの内容を含む CompilationUnits をコンパイラに作成します。
私の知る限り、コンパイルには2つの方法があります。そのうちの1つは、voidを返し、エラーと問題をPrintWriterに出力するcompile(units)メソッドです。これは、列情報を返さないため、私にとっては役に立ちません。もう 1 つの方法は resolve(unit) メソッドですが、1 つの CompilationUnit でしか機能しません。
プログラムでJDTコンパイラを使用して複数のファイルをコンパイルする方法を知っている人はいますか?
api - Javac : 「...という名前のファイルで宣言する必要があります」を無視します
私はコンパイラ API (javax.tools.JavaCompiler) から Java バイトコードを動的に生成するツールを使用しています。ソース コードをビルドし、API を使用してコンパイルし、リフレクションを介して使用します。
生成された非公開クラスのみを試す限り、それはまったく問題ありません。もしそうなら、私は「クラス MyClass は public です。MyClass.java という名前のファイルで宣言する必要があります」というメッセージを取得します。これは完全に正常であり、Java ファイルからコンパイルされたものではありません。
このエラーを回避する方法を探していますが、Java オプションにも API にも見つかりません。
java - ClassNotFoundException 実行時コンパイル済みサブクラスの読み込み中
JavaCompiler を使用して、実行時に Web アプリケーション内から CustomProcessor.java をコンパイルしています
コンパイルはうまくいき、最終的にはクラスファイルを使用してロードしようとしていますURLClassLoader
問題は、アプリケーションの他の場所で使用している をヒットしClassNotFoundException
てProcessor
いることです (そこにあることがわかっているように)。実行時に表示さ
れるようにするには、何をする必要がありcom.mycompany.Processor
ますか?
ありがとう。
java - Java で Jar をコンパイルする
何年もの間、IDE (Eclipse) を使用して jar ファイルをコンパイルしてきました。何年にもわたって、それらがどのように機能するかを学びましたが、jar がメインメソッドの場所をどのように認識しているかをまだ完全には理解していません。手動でコンパイルするのがどれほど簡単か (またはそうでないか) に興味があります。
私が取り組んでいる (一種の) IDE があり、ユーザーからのファイルと、jar または他のクラス (API) の束の両方を含む jar をコンパイルして実行できる必要があります。ここでJavaクラスに言及しているJavaCompiler
がデモコードを提供していないいくつかの質問を見ました。手動でコンパイルする方法を知っている人はほとんどいないようですので、貢献したいと思います。では、Java コードを使用して jar ファイルを作成するにはどうすればよいでしょうか。デモコードを提供してください。