我是Java EE 7的新手。

我有带有GlassFish 4.0和Java EE 7的Netbeans 7.4。在一台64位Windows 8.1 Pro计算机中。我想启动GlassFish 4.0 Server,所以我单击了Netbeans中的“服务”选项卡,然后在“服务器”选项中,右键单击了GlassFish Server 4.0,然后单击了“启动”。

当我这样做时,我收到以下消息:“无法启动GlassFish Server 4.0:服务器未运行时,HTTP或HTTPS监听器端口已被占用”。我也有IIS服务器,但是我停止了它。停止IIS之后,我尝试再次启动GlassFish,但它向我显示了相同的消息。

在Netbeans中也有一个名为输出-Java DB数据库进程的窗口,它向我显示了以下内容:

Tue May 06 22:03:11 GMT-05:00 2014 : Security manager installed using the Basic server security policy.
Tue May 06 22:03:11 GMT-05:00 2014 Thread[main,5,main] java.io.FileNotFoundException: D:\Users\Juan Jose\.netbeans-derby\derby.log (Access is denied)
Tue May 06 22:03:12 GMT-05:00 2014 : Could not listen on port 1527 on host localhost:
 java.net.BindException: Address already in use: JVM_Bind
Tue May 06 22:03:12 GMT-05:00 2014 : Could not listen on port 1527 on host localhost:
 java.net.BindException: Address already in use: JVM_Bind

我在Windows中运行了netstat -a来查看1527端口发生了什么,并且该端口处于监听模式。

那么我怎么知道哪个应用程序或进程正在占用1527端口呢?

谢谢你的帮助 !!

最佳答案

要查找保持繁忙端口的process1,请尝试以下命令:

netstat -ano | find "1527"

这将显示带有端口和进程标识符的一行。例如。:
TCP    127.0.0.1:1527         0.0.0.0:0              LISTENING       2268

获得进程ID(例如2268)后,运行以下命令释放端口(这将终止该进程):
taskkill /F /PID 2268

现在,尝试启动Glassfish。

在Linux上:
lsof -Pnl +M -i6 | grep 1527

产生:
java    31139     1001   32u  IPv6 114916062      0t0  TCP 127.0.0.1:1527 (LISTEN)

杀死:
kill -9 31139

1如果您想了解关联的程序,请参见How do I find out what service is using a certain port?

10-07 16:23
查看更多