3

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

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

4

4 回答 4

4

日食氧气 (4.7)

Eclipse Oxygen添加了终止和重新启动功能。

有两种可能的方法:

  1. Shift在单击“运行”按钮的同时按下。

  2. 转到Window > Preferences > Run/Debug > Launching > 检查启动时终止和重新启动(在启动期间从菜单或工具栏按“Shift”切换) >应用并关闭> 运行应用程序

    运行/调试 > 启动 > 终止并重新启动

于 2017-05-27T23:44:18.993 回答
1

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

于 2012-12-17T12:38:20.197 回答
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();
        }
    }
}
于 2012-12-17T13:44:00.197 回答
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 进程列表的最有用的方法。

于 2012-12-17T14:24:39.947 回答