启动CodeServer遇BindException:GWT Super Dev Mode端口冲突问题咨询
GWT Super Dev Mode与CodeServer端口冲突问题解决
问题2解答:启动Super Dev Mode时是否默认启动9876端口的CodeServer?
是的,当你通过com.google.gwt.dev.DevMode启动Super Dev Mode时,该主类会默认在内部启动一个CodeServer实例,且默认监听9876端口。这就是你后续启动独立CodeServer时遭遇端口占用的直接原因——即使你给DevMode加了-codeServerPort 9997参数,若模块配置或页面调试逻辑未同步,内置CodeServer仍可能沿用9876端口,或者页面仍指向该端口。
问题1解答:如何让CodeServer与Super Dev Mode共用端口
你完全不需要单独启动com.google.gwt.dev.codeserver.CodeServer主类,DevMode已经整合了CodeServer的功能,只需调整配置让内置实例正常工作即可,步骤如下:
确保DevMode的内置CodeServer使用指定端口
你的启动参数里已经添加了-codeServerPort 9997,但需要验证参数是否生效:- 启动DevMode后,查看日志输出,确认是否有
CodeServer started on port 9997类的提示,若依然显示9876,检查Eclipse启动配置的参数是否被引号/变量干扰,或者同步gwt-maven-plugin的配置:<plugin> <groupId>net.ltgt.gwt.maven</groupId> <artifactId>gwt-maven-plugin</artifactId> <version>...</version> <configuration> <modules>...</modules> <superDevMode> <codeServerPort>9997</codeServerPort> </superDevMode> </configuration> </plugin>
- 启动DevMode后,查看日志输出,确认是否有
同步模块页面的调试脚本/书签端口
模块页面仍指向9876,说明调试逻辑未更新:- 若页面内嵌调试脚本,修改端口为9997:
var moduleBaseURL = window.location.protocol + '//' + window.location.hostname + ':9997/'; - 若使用调试书签,更新书签URL的端口:
javascript:var%20s=document.createElement('script');s.src='http://127.0.0.1:9997/dev_mode_on.js';document.body.appendChild(s);
- 若页面内嵌调试脚本,修改端口为9997:
验证端口占用状态
启动DevMode后,检查端口占用:- Windows:
netstat -ano | findstr :9876 - Linux/Mac:
lsof -i :9876
若9876仍被占用,说明-codeServerPort参数未生效,需排查Eclipse启动配置的参数传递是否正确。
- Windows:
额外说明
如果确实需要单独启动CodeServer(比如多模块独立调试),则必须停止DevMode,同时给独立CodeServer指定未被占用的端口(如9877),并同步所有模块的页面脚本指向该端口——此时不能同时启动DevMode,否则它会内置占用9876端口导致冲突。
内容的提问来源于stack exchange,提问作者Dil Neemuth
相关产品推荐
相关产品推荐

