1

Intellij のアイデアから Java プログラムを実行しているときに、(idea_rt.jar から) AppMain というクラスによるリフレクションを介して実行されていることに気付きました。

IntelliJ 製品仕様:

IntelliJ IDEA (Community Edition) IC-145.184.1 ビルド #IC-145.184、2016 年 3 月 1 日にビルド JRE: 1.8.0_60-b27 x86

例: 以下のコードを実行すると、

public class Example{


    public static void main(String[] args) {
        throw new RuntimeException();
}
}

以下は、AppMain からの 5 つの内部呼び出しがある出力です。

スレッド「メイン」で例外が 発生するsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) で java.lang.reflect.Method.invoke(Method.java:497) で com.intellij.rt.execution.application.AppMain.main(AppMain.java) で:144)

ご覧のとおり、すべてのスタック トレース情報には、idea_rt.jar の AppMain クラスに由来する 5 つの追加のスタック トレース情報があります。

AppMain を使用せずに IntelliJ IDE から Java アプリケーションを実行する方法はありますか?

4

1 に答える 1

3

これを実現するには、いくつかの方法があります。gradle を使用している場合は、次の回答の指示に従うことができます: gradle run。または、maven を使用している場合は、次の回答に従うことができます: maven run。Maven または gradle ソリューションを構成したら、使用しているビルド ツールに関連付けられたツール ウィンドウから実行するか、同じウィンドウを使用して実行タスクにキーボード ショートカットを割り当てることができます。

これらのソリューションは、クラスパスを構築するので役に立ちます。何らかの方法で手動で作成する場合 (おそらく、IntelliJ にメソッドを実行するように依頼するときに実行ウィンドウからコピーすることによって)、独自のシェル スクリプトを作成し、IntelliJ にそれを実行するように依頼することができます。何らかの方法でパスに追加してシェルツールウィンドウにその名前を入力するか、スクリプトを参照する新しい「アプリケーション」実行構成を追加します。

ただし、以前のコメントはまだ正しいです。これを行うべきではありません。私は、あなたがプロダクションと考えているものは何であれ、intellijからアプリを実行しないと思いますか? したがって、これは生産上の問題ではなく、個人的に本当に気になるだけです。その場合は無視して、時間を有効に活用してください。

于 2016-03-21T13:52:43.483 に答える