有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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


共 (4) 个答案

  1. # 1 楼答案

    您可以通过代码的方式来完成,而不是使用任何eclipse配置,我觉得这样更好。启动应用程序时,只需检查系统中运行的进程,并搜索要启动的进程。如果您发现该应用程序正在运行,请向其发送终止信号,然后继续启动。希望有帮助。如果您不使用eclipse,它会一直工作P

  2. # 2 楼答案

    这是我一两年前写的一个片段,从那以后一直做得很好。只需添加一个包声明。从您想要终止拥有端口的进程的任何位置调用此函数,例如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();
            }
        }
    }
    
  3. # 3 楼答案

    日食氧气(4.7)

    Eclipse Oxygen添加了terminate and relaunch功能

    有两种可能的方法:

    1. 按下Shift键,同时单击运行按钮

    2. 转到窗口>首选项>运行/调试>启动>;选中“在启动时终止并重新启动”(在启动过程中按“Shift”可从菜单或工具栏切换)>应用并关闭>;运行应用程序

      Run/Debug > Launching > Terminate and Relaunch

  4. # 4 楼答案

    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

    或者,您可以使用对服务器对象的引用连接自己的组件,该服务器对象只在另一个端口上侦听要传递给它的停止密钥

    在命令行中,“jps”是获取java进程列表的最有用的方法