5

エラーが発生すると赤い波線が表示されるので、IntelliJ は常にコンパイルしていますか? (オートコンプリート機能に加えて)または、ある種の疑似コンパイルを行っていますか?

合法的なコンパイルを行っている場合、これらのコンパイルされたクラスはどこに置かれますか? 個々のモジュール ターゲット フォルダではなく、そのディレクトリを JRebel に指定したいと思います。

4

5 に答える 5

7

カスタム言語用のプラグインを開発したときに学んだことから、IntelliJ はプロジェクトを明示的に作成するまで何もコンパイルしません。入力中に、レクサー/パーサーが無効なトークンまたはコード構造を検出します。その間、プロジェクト内のすべてのクラスとメソッドのインデックスとその依存関係、およびそれらの署名など​​を維持します.

入力を止めると、右ガターの上部に小さな色付きの目が表示されます。IDE が「アノテーター」と「コード インスペクション」を実行していることを示します。それらは、現在のインデックスとファイルの現在の状態 (インポート、宣言など) に基づいて、クラス、メソッド、および変数が有効かどうかを判断できます。未使用の変数、メソッド呼び出しの無効なパラメーターなどについても同様です。

長所:

  • アノテーターは、基本的に現在のファイルを表す拡張された AST である PSI ツリーと呼ばれるものに直接取り組みます。
  • 毎回コンパイルするよりも高速かもしれません (インデックスを使用し、すべての依存クラスを再コンパイルする必要はありません)。
  • アノテーターはjavac、潜在的なバグなど、気にしないことを検出できます (例:条件=の代わりに==使用while)

短所:

  • これは大変な作業です。基本的に、ロジックを書き直して、発生する可能性のあるすべてのエラーを見つける必要があります(そのため、「良いコードは赤」または「悪いコードは緑」とjavacラベル付けされたバグトラッカーで多くの問題を見つけることができます。彼らが検出したものとコンパイラが出力するものとの違い)

TL;DR: プロジェクトを作成するまで何も生成されません。.classすべてが「手作業」で行われます。

于 2014-07-31T18:31:21.103 に答える
4

すべてのモジュールについて、コンパイラの出力パスはModule SettingsのPathsタブから見つけることができます。JRebel プラグインは rebel.xml を自動的に生成し、Module Settingsからディレクトリ パスを取得するため、手動で場所を指定する必要はありません。IDE プラグインを使用して rebel.xml を生成するだけです。プロジェクト ビューでモジュールを右クリック -> JRebel - > rebel.xml を生成

于 2014-07-31T06:04:31.593 に答える
3

追加するだけで、コンパイル後、Maven プロジェクトの場合、クラスはtargetディレクトリに格納されます。それ以外の場合、ディレクトリは IntelliJ のプロジェクト構造の「プロジェクト コンパイラ出力」で指定されます。

ここに画像の説明を入力

于 2018-10-06T17:13:16.250 に答える