【发布时间】: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
我在尝试解析“Server failed to start for port 8080: Address already in use”时遇到此错误
Error executing script 8888: For input string: ""
有人可以帮忙吗?不知道怎么了。谢谢。
【问题讨论】:
标签: grails
当端口号 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`
netstat -a -n -o | find "8080"
如果您使用的是 Grails/Groovy Tool Suite(基于 Eclipse 的 IDE),请选择 Run as > Run Configurations.... 然后,在 Grails 选项卡中,像这样输入:
-Dserver.port=8050 run-app
因此,Grails 将在端口 8050 而不是默认端口 (8080) 上运行。
【讨论】:
消息
8080 端口服务器启动失败:地址已在使用中
表示您机器上的某个其他进程已经将自己绑定到端口 8080。我猜这是一个正在运行的 Tomcat 实例,因为您启动了它,或者它没有被您使用的任何 IDE 正确关闭。
无论如何,this question 应该可以帮助您结束正在使用该端口的进程。
关于脚本 8888 的第二个错误,我不知道。 Grails 不会尝试在我的环境中启动此脚本,所以我想它与您安装的插件有关。
【讨论】:
问题是端口号 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
【讨论】:
如何杀死一个繁忙的端口
打开命令提示符并输入 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 的进程已终止。
【讨论】:
如果您使用的是 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好像有答案了。
【讨论】:
当端口号 8080 已经被使用并且你想重用同一个端口时,你应该终止它的进程:
使用fuser 8080/tcp 将打印绑定在该端口上的进程的PID。
而这个fuser -k 8080/tcp 会杀死那个进程。
仅适用于 Linux。更普遍的是使用 lsof -i4(或 6 用于 IPv6)。
示例:如果端口是 8080,则在终端上运行:
fuser -k -n tcp 8080
就是这样!
【讨论】:
表示有服务使用8080端口。 您可以在终端上输入命令“netstat”来验证它。
如何停止使用此端口的服务? 在 Windows 上,您可以通过以下步骤停止此类服务:
如果它没有作为服务运行,您可能需要使用任务管理器强制它停止。
【讨论】:
比其他发布的答案更容易。
在控制台窗口中有一个 X 和 XX 图标。当您将光标悬停在它上面时。您将看到显示“删除启动”和“删除所有已终止的启动”的气球。
同时单击它们。 Eclipse 将清除所有现有服务器,以便您可以在默认端口上重新启动服务器。
【讨论】:
您需要杀死在端口 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 表示进程将被强制终止。
【讨论】:
您可以检查8080端口当前是否正在使用。
sudo lsof -i :8080
然后你可以看到端口状态包括COMMAND、PID、USER等等。
然后,您可以使用PID 终止它。
kill -9 <PID>
【讨论】: