Подтвердить что ты не робот

Стоп Eclipse/Java, выполняющий несколько экземпляров

Я не эксперт по Java или эксперт по eclipse. В настоящее время я работаю над проектом, и мне нужно часто отлаживать/тестировать. Для этого я использую кнопку запуска eclipse. Но когда я не закрываю программу, eclipse/java снова открывает ее (второе окно). Это приложение gui с качели jframe.

Есть ли функция в eclipse или java для завершения предыдущей сборки и открывает ее при запуске?

4b9b3361

Ответ 1

Попробуйте выполнить следующие действия:

  • Если вы находитесь в отладочной перспективе, вы можете щелкнуть правой кнопкой мыши на запущенном экземпляре и нажать "Завершить и переустановить" (для этого вы можете привязать сокращение от окна → Настройки → Общие → Ключи). Это получилось хорошо для меня.

  • Эта ссылка говорит, что вы можете привязать "Terminate and Relaunch" в любом случае. Вы можете попробовать, но то же самое не получилось для меня.

  • Используйте этот плагин https://bitbucket.org/mantis78/relaunch-plugin (не пробовал).

Ответ 2

В eclipse при запуске/отладке приложения создается новый экземпляр. Существует два варианта:

  • При запуске приложения открывается консоль. Следовательно, вы должны остановить существующее приложение, щелкнув по одному из них: Console view

  • В режиме отладки вы должны сделать то же самое. Debug view

Или иначе вы должны обработать это в коде. Проверьте эту тему: Как ограничить приложение Eclipse-RCP одним экземпляром?

Надеюсь, что это будет полезно.

Ответ 3

Просто добавьте другое, самое быстрое (для меня) решение:

перед запуском, нажмите ctrl-F2.

Этот ярлык завершает текущее/отладочное приложение.

Ответ 4

В Eclipse Neon перейдите к Window -> Preferences -> Run/Debug -> Launching и в разделе Launch Operation проверьте:

[X] Terminate and Relaunch while launching

Завершить и перезапустить при запуске

Ответ 5

Я чувствую, что проблема не в eclipse, а в том, как вы внедрили свое приложение. Пожалуйста, обратитесь к следующему URL-адресу. Вышеупомянутые решения, хотя и действительны, будут проблематичными, если ваше приложение запускается за пределами затмения. Поскольку каждый раз, когда пользователь запускает и закрывает приложение, запускается новый экземпляр jvm.

Выход на кнопку закрытия

Ответ 6

На самом деле поздно, но эй, лучше поздно, чем никогда. Используйте 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();
    }
}

Ответ 7

просто нажмите кнопку остановки. или закрыть сеанс кнопкой выхода