Eclipse:在重新运行之前终止当前进程

时间:2012-12-17 12:31:06

标签: java eclipse jetty

我正在开发一个使用嵌入式jetty web server的小型服务器应用程序。该服务绑定到TCP端口并在后台运行。由于应用程序没有完成(它是一项服务),我必须手动终止该过程才能重新运行它(例如,因为当前进程正在使用TCP端口)。

Eclipse中是否可以在重新启动之前自动终止当前进程?

4 个答案:

答案 0 :(得分:1)

你可以用代码的方式来做,而不是使用任何eclipse配置,我更好。启动应用程序时,只需检查系统中正在运行的进程并搜索要启动的进程。如果您发现该应用程序正在运行,请向其发送一个终止信号,然后继续启动。希望有所帮助。如果你还没有使用eclipse,它始终有效。 :P

答案 1 :(得分:1)

这是我在一两年前写过的片段,从那以后一直在做这件事。只需添加包声明即可。从您想要杀死拥有端口的进程的任何地方调用此方法,例如main()。

import java.io.IOException;

public class KillPortHolderSimple {

    public static void killHolderOfPort(int port) {
        final String how = "-KILL";
        try {
            Runtime.getRuntime().exec(new String[]{"sh", "-c", "lsof -i :" + port + " -t | xargs kill " + how});
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

答案 2 :(得分:1)

Jetty还有一个ShutdownHandler,您可以将其连接到您的处理程序链中,该处理程序链将接受来自localhost的连接以及可以触发正常关闭的密钥。

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ShutdownHandler.java

或者,您可以使用对仅侦听另一个端口的Server对象的引用来连接您自己的组件,以便将停止键传递给它。

在命令行上,'jps'是获取java进程列表的最有用方法。

答案 3 :(得分:0)

Eclipse Oxygen(4.7)

Eclipse Oxygen添加了terminate and relaunch功能。

有两种可能的方法:

  1. 点击运行按钮时按 Shift

  2. 转到窗口> 偏好设置> 运行/调试> 启动>启动时检查 终止并重新启动(在菜单或工具栏的启动过程中按'Shift'切换) > 应用并关闭>运行应用程序

    Run/Debug > Launching > Terminate and Relaunch