我不是java專家或eclipse專家。 目前我正在進行一個項目,我需要經常調試/測試。我使用eclipse運行按鈕。但是,當我不關閉程序eclipse/java再次打開它(第二個窗口)。 這是一個帶有swing jframe的gui應用程序。停止運行多個實例的Eclipse/Java
eclipse或java中是否有一個函數用於終止以前的版本,並在運行時打開新版本?
我不是java專家或eclipse專家。 目前我正在進行一個項目,我需要經常調試/測試。我使用eclipse運行按鈕。但是,當我不關閉程序eclipse/java再次打開它(第二個窗口)。 這是一個帶有swing jframe的gui應用程序。停止運行多個實例的Eclipse/Java
eclipse或java中是否有一個函數用於終止以前的版本,並在運行時打開新版本?
請嘗試以下方法:
如果你在調試的角度來看,你可以右鍵點擊運行實例,然後單擊「終止並重新啓動」(您可以從窗口綁定快捷這個 - >首選項 - >一般 - >鍵)這對我來說很好。
This link說你可以綁定「終止&重新啓動」在任何預期。你可以嘗試一下,但是對我來說也一樣。
1)工作,但不幸的是我不能設置相同的調試密鑰終止和重新啓動,只需要記住點擊右鍵:(赫赫,如果我們可以算法宏eclipse命令它可以工作,我認爲 –
在eclipse中,當您運行/調試應用程序時,會創建一個新實例。 有兩個選項:
當你運行一個應用程序就打開了UI /結果在控制檯中。因此,您必須通過單擊其中一個來停止現有應用程序:
在調試模式下,您必須執行相同操作。
否則你必須在代碼中處理這個。檢查此線程:How to restrict Eclipse-RCP application to a single instance?
希望這是有幫助的。啓動時,按ctrl-F2
前
:
我想補充另一個,最快的(對我來說)的解決方案。
該快捷方式終止當前正在運行/調試的應用程序。
我覺得問題不在eclipse中,而在於你實現應用程序的方式。詳情請參閱以下網址。如果您的應用程序在eclipse外部運行,上述解決方案雖然有效,但會產生問題。隨着用戶每次啓動和關閉應用程序,都會啓動一個新的jvm實例。
只需按下停止按鈕。或通過退出按鈕關閉會話
真的很晚在這一個,但嘿,遲到比從未。初始化所有內容時使用start()。如果您使用的是JFrame,請使用start(Jframe框架),以便在程序手動關閉時自動處理。如果不是,請在程序手動退出時調用CloseClose(),否則它將不會在下一次啓動。
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();
}
}
我實際上更喜歡你的方法爲我的usecases,我已經創建了一個同樣的邏輯,但使用gist [Highlander](https://gist.github.com/hrgdavor/d81a231c274e225447117902a633bdb9),但使用TCP端口(它只增加了10-15毫秒的延遲)我喜歡這個,因爲我只是按F11或CTRL + F11來運行最新的應用程序,我已經習慣了這麼多的run-jetty p lugin –
有一個紅色的方形圖像的停止按鈕。點擊它停止/終止應用程序。 –
@LuiggiMendoza只會停止當前進程。你需要通過任務管理器來終止Java進程(至少,這是我總是這樣做的)。但坦率地說,只需在窗口中添加一個onclose即可:'frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)' – Vulcan
@Vulcan即使我在Eclipse上運行多線程應用程序,它也能工作(它甚至可以阻止/終止Web應用程序服務器)。 –