我使用eclipse开发基于Web的java应用程序。我的正常业务是抓住下一个任务跟踪票。如果存在需要纠正的问题,我在本地运行应用程序,加载Jetty Web服务器,并绑定到端口8080.在验证问题后,我解决了问题,重建并重新运行应用程序。问题是,我经常忘记在重新运行之前关闭jetty服务器。这会生成Java绑定错误:
WARNING: failed SocketConnector@0.0.0.0:8080: java.net.BindException: Address already in use: JVM_Bind
我在Windows工作,并且正在寻找是否有可以运行以取消绑定端口的命令,但在那里找不到答案。这里有没有人知道如何解决我的问题,除了记得在开始新的Jetty实例之前关闭旧的jetty实例?
谢谢, 杰
答案 0 :(得分:1)
netstat -ap | grep 8080
查找正在使用该端口的进程。 (什么,你没有在Windows上安装合适的grep?每个人都应该!)-Djetty.port=<port number>
更改Jetty使用的默认端口号。答案 1 :(得分:1)
要彻底解除端口绑定,通常需要停止保持端口打开的进程(否则,无论如何,进程可能会因奇怪的通信错误而死亡)。
您可以使用短批处理文件来检测端口是否正在使用并终止Jetty进程。假设你的路径中有Sysinternal's pskill.exe可用(例如在C:\ Windows下),这里有一个例子可以杀死保持端口8080打开的进程:
FOR /F "skip=4 tokens=2,5" %%G IN ('netstat -ano') DO (
IF "%%G"=="127.0.0.1:8080" pskill %%H
)
答案 2 :(得分:0)
你在那里回答了你自己的问题......既然你不能在同一个端口上运行两个应用程序,你需要记住在开始新的应用程序之前关闭旧的应用程序。
你提到应用程序启动一个Jetty实例,启动应用程序是否可以检查它是否已经在运行之前?我想我和你不在同一页......
但是,有一些很好的方法可以“热部署”您的更改 - 一旦您运行appserver,您就可以对JSP文件或Java类进行更改,它将自动部署这些更改。
您使用的是run-jetty-run之类的整合吗?如果没有,你可能想尝试一下。
MyEclipse也浮现在脑海中,虽然我不是它的忠实粉丝,但有些人真的很喜欢它。
但在大多数情况下,只需记住停止并重新开始。