27

私はJavaの専門家でも日食の専門家でもありません。現在、私はプロジェクトに取り組んでおり、頻繁にデバッグ/テストする必要があります。私はそれのために日食実行ボタンを使用します。しかし、プログラムを閉じないと、eclipse / javaが再び開きます(2番目のウィンドウ)。これは、swingjframeを備えたGUIアプリです。

以前のビルドを終了し、実行時に新しいビルドを開く関数がEclipseまたはJavaにありますか?

4

7 に答える 7

13

Eclipse NeonWindow -> Preferences -> Run/Debug -> Launchingで、Launch Operationセクションに移動してチェックします。

[X] Terminate and Relaunch while launching

起動中に終了して再起動します

于 2017-07-14T00:31:28.473 に答える
8

次の方法を試してください。

  1. デバッグの観点から、実行中のインスタンスを右クリックして[終了して再起動]をクリックできます(これのショートカットは、[ウィンドウ]->[設定]->[一般]->[キー]からバインドできます)これは私にとってはうまくいきました。

  2. このリンクは、どのような見通しでも「終了と再起動」をバインドできることを示しています。試してみることができますが、同じことがうまくいきませんでした。

  3. このプラグインhttps://bitbucket.org/mantis78/relaunch-pluginを使用します(試されていません)。

于 2013-06-04T21:08:11.157 に答える
4

eclipseでは、アプリケーションを実行/デバッグすると、新しいインスタンスが作成されます。2つのオプションがあります。

  1. アプリケーションを実行すると、コンソールでUI/結果が開きます。したがって、次のいずれかをクリックして、既存のアプリケーションを停止する必要があります。コンソールビュー

  2. デバッグモードでは、同じことを行う必要があります。デバッグビュー

または、コードでこれを処理する必要があります。このスレッドを確認してください:Eclipse-RCPアプリケーションを単一のインスタンスに制限する方法は?

これがお役に立てば幸いです。

于 2013-06-10T05:41:15.690 に答える
2

別の最速の(私にとって)ソリューションを追加するだけです:

起動する前に、を押しctrl-F2ます。

このショートカットは、現在実行中/デバッグ中のアプリケーションを終了します。

于 2013-06-10T06:56:34.957 に答える
1

問題は日食ではなく、アプリケーションの実装方法にあると思います。詳細については、以下のURLを参照してください。上記の解決策は有効ですが、アプリが日食の外で実行されている場合は問題が発生します。ユーザーがアプリを起動して閉じるたびに、新しいjvmインスタンスが起動されます。

閉じるボタンで終了

于 2013-06-10T07:21:54.830 に答える
1

これは本当に遅いですが、ねえ、決して遅くないよりはましです。すべてを初期化するときはstart()を使用します。JFrameを使用している場合は、start(Jframe frame)を使用して、プログラムが手動で閉じられたときに自動的に処理されるようにします。そうでない場合は、プログラムを手動で終了するときにonClose()を呼び出してください。そうしないと、次回は起動しません。

package your.package;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;

import javax.swing.JFrame;

public class ReLaunch {
    private static boolean relaunchClose = false;
    private static File runCheck = new File("run.check");
    private static File deleteCheck = new File("delete.check");

    /**
     * Use ReLaunch to stop multiple instances
     */
    public static void start() {
        //Check to see if application is already running
        if(runCheck.exists()) {
            //Mark a request to exit the existing application
            try { deleteCheck.createNewFile(); } catch (IOException e) { e.printStackTrace(); }
            //Wait until the existing application terminates itself
            while(runCheck.exists());
            //Remove the delete request so current application doesn't terminate
            if(deleteCheck.exists()) deleteCheck.delete();
        }

        //Mark that this application is currently running
        try { runCheck.createNewFile(); } catch (IOException e) { e.printStackTrace(); }

        //Creates a new thread that checks if a new application is requesting to run
        new Thread(new Runnable() {
            public void run() {
                //Wait until delete request shows up
                while(!deleteCheck.exists());
                //Proof that the application is closed to be re-launched
                relaunchClose = true;
                //Unmarks this application as running
                if(runCheck.exists()) runCheck.delete();
                //Terminated so new application can run
                System.exit(0);
            }
        }).start();
    }

    /**
     * Same as start, but automatically handles when the frame is closed by the user by marking that no applications are running
     * @param frame JFrame which needs to be closed
     */
    public static void start(JFrame frame) {
        start();
        //Listen for when the window is manually closed
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent event) {
                onClose();
            }
        });
    }

    /**
     * Marks this application as not running if it is exited manually
     */
    public static void onClose() {
         if(!relaunchClose) runCheck.delete();
    }
}
于 2016-09-05T16:37:36.620 に答える
-3

停止ボタンを押すだけです。または終了ボタンでセッションを閉じます

于 2013-06-11T17:36:36.483 に答える