我不是java专家或日食专家。 目前我正在研究一个项目,我需要经常调试/测试。我使用eclipse运行Button。但是当我不关闭程序时,eclipse / java会再次打开它(第二个窗口)。 这是一个带有swing jframe的gui应用程序。
eclipse或java中是否有一个函数可以终止上一个版本并在运行时打开新版本?
答案 0 :(得分:7)
尝试以下方式:
如果您处于调试透视图中,可以右键单击运行实例并单击“终止并重新启动”(您可以从窗口绑定快捷方式 - >首选项 - >常规 - >键)这对我很有帮助。
This link表示您可以在任何方面绑定“终止和重新启动”。你可以尝试一下,但同样对我没有用。
答案 1 :(得分:4)
在Eclipse Neon中转到Window -> Preferences -> Run/Debug -> Launching
并在Launch Operation
部分检查:
[X] Terminate and Relaunch while launching
答案 2 :(得分:3)
在运行/调试应用程序时,在eclipse中创建一个新实例。 有两种选择:
运行应用程序时,它会在控制台中打开UI /结果。因此,您必须通过单击其中一个来停止现有应用程序:
在调试模式下,您必须执行相同操作。
否则你必须在代码中处理这个问题。检查此主题:How to restrict Eclipse-RCP application to a single instance?
希望这有用。
答案 3 :(得分:2)
只需添加另一个,最快的(对我来说)解决方案:
启动前,按ctrl-F2
。
此快捷方式终止当前正在运行/已调试的应用程序。
答案 4 :(得分:1)
我觉得问题不在于eclipse,而在于你实现应用程序的方式。有关详细信息,请参阅以下URL。如果您的应用程序在eclipse之外运行,上述解决方案虽然有效但会有问题。每当用户启动和关闭app时,都会启动一个新的jvm实例。
答案 5 :(得分: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();
}
}
答案 6 :(得分:-3)
只需按停止按钮即可。或通过退出按钮
关闭会话