8

これは、 Eclipse IDE 内でコードが実行されていることを検出する方法を尋ねる、別のユーザーによる以前の質問に関連しています。

Eclipse はjavaw常にjava. javaw(これは、 で起動されたプログラムが Eclipse から起動されたことを意味するものではありません)。

を使用して渡された引数を見つけることができます

RuntimeMXBean RuntimemxBean = ManagementFactory.getRuntimeMXBean();
List<String> lst = RuntimemxBean.getInputArguments();
for (int i = 0; i < lst.size(); i++)
    System.out.println(lst.get(i));

javaしかし、これは、またはを使用して起動されたかどうかを教えてくれませんjavaw

  1. またはを使用して起動されたかどうかを確認する方法はありますjavajavaw?
  2. javawEclipse がプログラムの起動に使用するのはなぜですか?
4

3 に答える 3

6

System.console()は を返します。これは、とnullの使用の唯一の違いは の場合であり、関連するコンソール ウィンドウがないためです。javajavawjavaw

これを実証するために使用できる小さなテスト プログラムを次に示します。

import javax.swing.JOptionPane;
public class ConsoleTest {
    public static void main(String[] args) {
        if (System.console() == null) {
            JOptionPane.showMessageDialog(null, "System.console() is null");
        } else {
           JOptionPane.showMessageDialog(null, "System.console() is not null");
        }
    }
}

ただし、Eclipse 内から実行すると、 で開始した場合System.console()でも が返されます。nulljava

Eclipse の起動構成の [JRE] タブで、Runtime JRE をAlternate JREに変更すると、Java 実行可能ファイルを からjavawに変更できますjava

于 2010-03-18T10:46:24.980 に答える
4

System.console()のチェックは、次の理由でうまくいきませんでした:

  1. JDK 6 以降が必要です
  2. アプリケーションがRuntime.exec(String)メソッドを介して実行された場合、Console オブジェクトも失われます。多くの自動化されたスクリプトを使用しているため、これは私にとって非常に重要でした。

だから私は次の解決策を使用しています:

private static boolean isJavaw() {
  try {
    System.in.available();
    return false;
  } catch (IOException e) {
    // invalid handle in case of javaw
    return true;
  }
}

JDK 5、6、および 7 で正常に動作します。

于 2012-12-10T15:41:42.790 に答える
1

javaまたはjavawを使用して起動されたかどうかを確認する方法はありますか?

ドキュメントによると、javaw コマンドは java と同じですが、javaw にはコンソール ウィンドウが関連付けられていません。コマンド プロンプト ウィンドウを表示したくない場合は、javaw を使用します。ただし、何らかの理由で起動に失敗した場合、javaw ランチャーはエラー情報を含むダイアログ ボックスを表示します。

Eclipse が javaw を使用してプログラムを起動するのはなぜですか?

  1. javaw から java に変更するには:

    1. メニューバーから「実行」->「実行...」を選択して、起動構成を開きます。
    2. アプリケーションの起動構成を選択します。
    3. 「JRE」ページに切り替えます。
    4. [デフォルトの Java 実行可能ファイルを使用] の選択を解除します
    5. 「javaw」の代わりに「java」と入力します。
  2. Eclipse 開発者は GUI アプリケーションを開発し、コンソール ウィンドウを必要としないためだと思います。

于 2010-03-18T11:24:34.737 に答える