【问题标题】:Grails: Resolving "Server failed to start for port 8080: Address already in use."Grails:解决“服务器无法为端口 8080 启动:地址已在使用中。”
【发布时间】:2012-11-11 10:02:54
【问题描述】:

我在尝试解析“Server failed to start for port 8080: Address already in use”时遇到此错误

 Error executing script 8888: For input string: ""

有人可以帮忙吗?不知道怎么了。谢谢。

【问题讨论】:

    标签: grails


    【解决方案1】:

    当端口号 8080 已经被使用并且你想重用同一个端口时,你应该终止它的进程:

    首先,检查正在使用端口 8080 的进程的 pid。要执行此操作,请运行:

    lsof -w -n -i tcp:8080
    

    在上面的示例中,使用端口 9090 的进程的 pid 为 3812

    记下 PID。您的机器上的 PID 可能不同。我们需要这个来执行下一个命令:

    所以你必须通过 run-app 测试它:

    grails run-app
    

    更新: lsof -w -n -i tcp:8080| awk '{print $2}'|awk 'END{print}' 的输出是 PID , 可以通过PID自动杀掉端口进程:

     kill -9 `lsof -w -n -i tcp:8080| awk '{print $2}'|awk 'END{print}'`
    

    【讨论】:

    • 你的杀进程方法可以压缩成kill -9 `lsof -t -i tcp:8080`
    • 在windows上,获取正在使用8080端口的进程的pid的命令是netstat -a -n -o | find "8080"
    【解决方案2】:

    如果您使用的是 Grails/Groovy Tool Suite(基于 Eclipse 的 IDE),请选择 Run as > Run Configurations.... 然后,在 Grails 选项卡中,像这样输入:

    -Dserver.port=8050 run-app
    

    因此,Grails 将在端口 8050 而不是默认端口 (8080) 上运行。

    【讨论】:

      【解决方案3】:

      消息

      8080 端口服务器启动失败:地址已在使用中

      表示您机器上的某个其他进程已经将自己绑定到端口 8080。我猜这是一个正在运行的 Tomcat 实例,因为您启动了它,或者它没有被您使用的任何 IDE 正确关闭。

      无论如何,this question 应该可以帮助您结束正在使用该端口的进程。

      关于脚本 8888 的第二个错误,我不知道。 Grails 不会尝试在我的环境中启动此脚本,所以我想它与您安装的插件有关。

      【讨论】:

        【解决方案4】:

        问题是端口号 8080 已被使用。因此,您要么必须停止该进程为新进程让路,要么可以在运行应用程序时指定 grails -Dserver.port=8090 run-app

        但是,由于您遇到脚本错误,您可能没有在 BuildConfig.groovy 中指定端口。

        解决方案如下: 在您的BuildConfig.groovy 中添加grails.server.port.http=8888

        请参阅此处的评论: http://www.icodeya.com/2012/06/grails-resolving-server-failed-to-start.html

        【讨论】:

          【解决方案5】:

          如何杀死一个繁忙的端口

          打开命令提示符并输入 C:>netstat -a -n -o |找到“8080” 查找端口示例的 PID TCP 0.0.0.0:8888 0.0.0.0:0 监听 9068

          下一个

          C:>taskkill /PID 9068 /F SUCCESS: PID 9068 的进程已终止。

          【讨论】:

            【解决方案6】:

            如果您使用的是 STS 或 Eclipse(或者可能是任何基于 Eclipse 构建的环境),一种选择是转到 Debug 透视图(Window -> Open perspective -> Debug)。从那里您可以右键单击正在运行的服务器,然后单击终止并重新启动。这将终止当前服务器并在同一端口上重新启动,这样您就不会收到 Server failed to start for port 8080: Address already in use 消息。

            至于Error executing script 8888: For input string: ""我之前没见过,不过@ShootingStar好像有答案了。

            【讨论】:

              【解决方案7】:

              当端口号 8080 已经被使用并且你想重用同一个端口时,你应该终止它的进程: 使用fuser 8080/tcp 将打印绑定在该端口上的进程的PID。

              而这个fuser -k 8080/tcp 会杀死那个进程。

              仅适用于 Linux。更普遍的是使用 lsof -i4(或 6 用于 IPv6)。

              示例:如果端口是 8080,则在终端上运行:

               fuser -k -n tcp 8080
              

              就是这样!

              【讨论】:

                【解决方案8】:

                表示有服务使用8080端口。 您可以在终端上输入命令“netstat”来验证它。

                如何停止使用此端口的服务? 在 Windows 上,您可以通过以下步骤停止此类服务:

                1. 以管理员身份登录您的系统
                2. 从“开始”菜单中,依次选择“控制面板”、“管理工具”和“服务”。
                3. 从列表中,找到名称以:Web Server 结尾的服务并停止它。

                如果它没有作为服务运行,您可能需要使用任务管理器强制它停止。

                【讨论】:

                  【解决方案9】:

                  比其他发布的答案更容易。

                  在控制台窗口中有一个 X 和 XX 图标。当您将光标悬停在它上面时。您将看到显示“删除启动”和“删除所有已终止的启动”的气球。

                  同时单击它们。 Eclipse 将清除所有现有服务器,以便您可以在默认端口上重新启动服务器。

                  【讨论】:

                    【解决方案10】:

                    您需要杀死在端口 8080 上运行的进程; 所以使用命令:

                    netstat -plten |grep java
                    

                    使用 grep java 作为 tomcat 使用 java 作为其进程。

                    它将显示带有端口号和进程ID的进程列表

                    tcp6       0      0 :::8080                 :::*                    LISTEN      
                    1000       30070621    16085/java
                    

                    /java 前面的数字是进程 ID。现在使用 kill 命令杀死进程

                    kill -9 16085
                    

                    -9 表示进程将被强制终止。

                    【讨论】:

                      【解决方案11】:

                      您可以检查8080端口当前是否正在使用。

                      sudo lsof -i :8080
                      

                      然后你可以看到端口状态包括COMMANDPIDUSER等等。

                      然后,您可以使用PID 终止它。

                      kill -9 <PID>
                      

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2014-09-03
                        • 2020-11-27
                        • 2019-10-23
                        • 2018-03-21
                        • 1970-01-01
                        • 2012-12-25
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多