問題タブ [ecj]
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 - Eclipse Java コンパイラ (ecj) がこれをコンパイルできないのはなぜですか?
次のコードがあります。
このコードは、javac 1.8.0_101 でコンパイルすると正常に動作し、期待どおりに 0 から 9 の数値を生成します。
しかし、このコードを Eclipse で使用すると、次のように表示されo.i
ます。
そして、これを実行するとエラーが発生します:
このコードをコンパイルするために javac を使用する必要があるのはなぜですか?
そして、どうすればEclipseを動作させることができますか?
編集:
私はいくつかのテストを行いましたが、ラムダでインスタンスを作成しない限り、ecj で動作します。
java - ECJ が IllegalArgumentException 処理 log4j 注釈で失敗する
私は自分のプロジェクトで log4j 2.11.1 を使用しており、@Plugin アノテーションを使用していくつかのカスタム アペンダーと構成ファクトリを作成しました。
これは、Eclipse 4.9 と IntelliJ の両方で、エラーなしで問題なくコンパイルされます。ただし、Eclipse バッチ コンパイラを実行すると、同じコードが IllegalArgumentException で失敗します。
このレポでは、この問題を再現するための最小限のプロジェクトを作成しました。ECJ のバージョン 4.7 と 4.9 を使用してみました。また、Java 8 OpenJDK と Oracle を使用してみました。すべて Ubuntu 18.04 マシンで実行しました。
ここで何が起こっているのか手がかりはありますか?
編集: OSX マシンで Java10 を使用しようとすると、同じエラーが表示されます。
java - 致命的なコンパイル エラー: ecj コンパイラの実行に失敗しました: 認識されないオプション: --module-version
次の組み合わせを実行しようとしています:
- メイヴン (3.6.1)
- OpenJDK 11
- module-info.java を使用
空の compilerArgs ノードを追加しようとしましたが、役に立ちませんでした。
module-info.java を削除すると問題は解決しますが、それは私が望んでいることではありません。
また、ソースhttp://central.maven.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/3.8.1/を見ました
特に CompilerMojo.java のソース:
module-version は常に追加されるため、これを抑制する方法はないようです:
ecj のドキュメントを見ると、「module-version」引数がありません
というわけで、今のところうまくいかないようです!?
Maven プラグイン セクション: