问题
I'm not a java expert or a eclipse expert. Currently I'm working on a project and i need to debug/test often. I use the eclipse run Button for it. But when I don't close the Program eclipse/java opens it again(second window). It's an gui app with swing jframe.
Is there a function in eclipse or java to terminate the previous build and opens the new one when you run it?
回答1:
Try the following ways:
If you are in debug perspective, you can Right click running instance and click "Terminate and Relaunch" (You can bind short-cut for this from Window -> Preferences -> General -> Keys) This worked out well for me.
This link says you can bind "Terminate & Relaunch" in any prespective. You can give it a try but the same did not work out for me.
Use this plugin https://bitbucket.org/mantis78/relaunch-plugin (Not tried).
回答2:
In Eclipse Neon go to Window -> Preferences -> Run/Debug -> Launching and in the Launch Operation section check:
[X] Terminate and Relaunch while launching
回答3:
In eclipse when you Run/Debug an application a new instance is created. There are two options:
When you run an application it opens up the UI/result in the console. Hence you have to stop the existing application by click on one of these:

In debug mode you have to do the same.

Or else you have to handle this in the code. Check this thread: How to restrict Eclipse-RCP application to a single instance?
Hope this is helpful.
回答4:
Just to add another, fastest (for me) solution:
before launching, press ctrl-F2.
This shortcut terminates the currently running/debugged application.
回答5:
I feel the issue is not with eclipse but the way you have implemented your application. Please refer the following url for details. The above solutions though valid will be problematic if your app is run outside eclipse. As every time a user launches and closes you app a new jvm instance will be launched .
Exit on close button
回答6:
Really late on this one, but hey, better late than never. Use start() when initializing everything. If you're using a JFrame, use start(Jframe frame) so it automatically handles when the program is close manually. If you're not, call onClose() when you're program is manually exited otherwise it won't start the next time.
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:
just press the stop button . or close the session by exit button
来源:https://stackoverflow.com/questions/13778919/stop-eclipse-java-running-multiple-instances

