Grails 项目运行错误 - 服务器无法为端口 8080 启动:地址已在使用中:JVM_Bind

Posted

技术标签:

【中文标题】Grails 项目运行错误 - 服务器无法为端口 8080 启动:地址已在使用中:JVM_Bind【英文标题】:Grails project run error -Server failed to start for port 8080: Address already in use: JVM_Bind 【发布时间】:2014-09-03 16:42:46 【问题描述】:

错误 | 服务器无法启动 8080 端口:地址已在使用中:JVM_Bind(使用 --stacktrace 查看完整跟踪)

当我第二次使用 grails 执行我的项目时 --- 2 Grails Command(run-app) 每次都会遇到这种类型的错误。

但是当我使用任务管理器杀死 javaw.exe 时,如果我再次运行它对我有用。有什么永久的解决方案吗?..请建议。

|打包 Grails 应用程序..

|编译10个源文件..

|正在编译121个源文件.......

|编译9个源文件…………

|运行 Grails 应用程序

错误 |服务器无法为端口 8080 启动:地址已在使用中: JVM_Bind(使用 --stacktrace 查看完整跟踪)

【问题讨论】:

在再次执行“run-app”之前关闭服务器怎么样? GGTS工具中如何关闭(停止)当前正在执行的服务器? 我相信“控制台”输出中有一个停止按钮,寻找红色矩形。 是的,我发现了,但是每次开始项目之前都需要停止吗?请建议。 我通常同时运行一个应用程序/项目。我建议在 BuildConfig.groovy 中为每个项目使用“server.port”JVM 参数或指定“grails.server.port.http”。 【参考方案1】:

您可以使用 cli 指定 HTTP 端口来运行服务器:

例子:

grails -Dserver.port=8090 run-app

更多详情在documentation

【讨论】:

Grails 2.3.8 当前正在使用中。非常感谢,但是当我过去使用 '2 Grails Command(run-app)' 运行我的项目时,它再次向我显示相同的错误消息。 'grails -Dserver.port=8090 run-app'有什么用 如果您使用的是 Grails/Groovy Tool Suite(基于 Eclipse 的 IDE),请选择 Run as > Run Configurations...。然后,在 Grails 选项卡中, 像这样输入: -Dserver.port=8050 run-app 因此,Grails 将在端口 8050 上运行,而不是默认端口 (8080)。 使用此命令,您可以在 8080 端口运行一台服务器,在 8090 端口运行第二台服务器。 我也遇到了这个错误 - [Fatal Error] :55573:4: XML 文档结构必须在同一个实体内开始和结束。 此错误与您的第一个问题无关。但是您可以尝试“grails clean”从应用程序中删除所有已编译的资源。 (grails.org/doc/latest/ref/Command%20Line/clean.html)。如有必要,您可以打开一个新问题。【参考方案2】:

当您第一次运行该应用程序时,它将继续运行,直到您明确告诉它停止。无论您如何启动应用程序(无论是从 GGTS 还是命令提示符),直到您发送命令 stop-app 它都会继续。你得到你一直遇到的错误:

Error | Server failed to start for port 8080: Address already in use: JVM_Bind (Use --stacktrace to see the full trace)

当该服务器仍在运行时。 Grails 将在您进行更改时对其进行编译,并且您可以立即在网页上看到结果(对于大多数更改,对域对象进行更改可能会出现问题,并且通常需要您重新启动服务器)。

我个人更喜欢在 GGTS 中编辑项目,但使用控制台来管理应用程序只是因为我更喜欢控制台的错误输出而不是 GGTS。

【讨论】:

【参考方案3】:

使用最新版本的 Grails(从 2.3.0 开始),默认设置是在分叉模式下运行服务器。你可以在BuildConfig.groovy找到这个配置:

grails.project.fork = [ ... ]

run-app 启用上述分叉模式后,必须在重新运行之前明确停止应用程序。因此,grails stop-app 必须在grails run-app 之前发出。

如果您不想在分叉模式下运行应用程序,请将此行替换为run:false:

run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false]

这样,就不需要显式运行stop-app 命令。

【讨论】:

您能否详细说明一下什么是 fork 以及我的项目中对此有何需求。如果我不使用它怎么办? 参考Grails documentation 非常感谢您的建议.. :)【参考方案4】:

打开 BuildConfig.groovy

解决方案 1: 然后将此行替换为 run:false 运行:[maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],

解决方案 2: 评论上一行

【讨论】:

如果我用 run:false 注释掉现有的运行行,那么发生了什么?如果我们需要更改该运行行,为什么会默认提及该运行行?您能否指定并让我清除所有这些......谢谢 ..:) 解决方案1:你能指定他应该用什么替换哪一行吗?解决方案2:注释前一行?

以上是关于Grails 项目运行错误 - 服务器无法为端口 8080 启动:地址已在使用中:JVM_Bind的主要内容,如果未能解决你的问题,请参考以下文章

使用 Gradle 运行时设置 Grails 端口

在本地主机上运行两个 grails 应用程序时如何解决跨域错误

Grails 突然抛出错误无法确定数据库名称的 Hibernate 方言

错误无法解决依赖项 grails

无法为 grails 中的对象堆保留足够的空间

Grails Spring Security Core无法登录