首页 > 解决方案 > 硬关闭 Eclipse 后无法启动服务器(tomcat 服务器已启动)

问题描述

我处理链接到我的 java 项目(在 Eclipse 上运行)的巨大存储库,有时(当我通常进行文本搜索时),我的 Eclipse 停止工作。

如果我在那种状态下“硬关闭”它并且我启动了我的 Tomcat,那么问题是它在退出之前不会停止 tomcat。

当我再次启动 Eclipse 时,它​​会告诉我 Tomcat 已停止(这不是因为当我硬关闭 Eclipse 时它没有停止 Tomcat),如果我再次尝试启动它,我会遇到以下错误:

Tomcat错误

我重新启动它的唯一方法是重新启动我的计算机..我承认这有点烦人..

你知道是否有办法在 Eclipse 中停止我的“幻象运行”tomcat 服务器,还是每次发生这种情况时我都必须重新启动计算机?(我的电脑没有管理员权限,无法使用任务管理器杀死进程)

非常感谢

标签: eclipsetomcatjvm

解决方案


停止 tomcat 的标准机制是在关闭端口上发送关闭命令。通常关闭端口是 8005。您可以通过手动发送命令来停止服务器:

  • 在 linux 上(仅出于完整性考虑):echo "SHUTDOWN" | nc -w 2 127.0.01 8005
  • 在窗户上:
    1. 远程登录 127.0.0.1 8005
    2. 类型SHUTDOWN

如果您无权访问这些命令,您可以用 java 编写一个简单的应用程序:

   public static void main(String[] args) throws IOException {
        final InetSocketAddress shutdownAddress = new InetSocketAddress(Inet4Address.getLoopbackAddress(), 8005);
        try (Socket socket = new Socket()) {
            socket.connect(shutdownAddress);

            try (OutputStream out = socket.getOutputStream()) {
                out.write("SHUTDOWN".getBytes(StandardCharsets.US_ASCII));
            }
        }
    }

PS:在 linux 上你也可以发送信号 SIG_INT:kill -2 <PID>


推荐阅读