无法从Netbeans 8.0.1服务区内启动GlassFish 4.1

17

在Windows 7上,我从https://netbeans.org/downloads/下载了"netbeans-8.0.1-javaee-windows.exe"安装程序。该安装程序安装了GlassFish 4.1、Java 1.8.0_20和NetBeans 8.01。安装完成后,每当我尝试从NetBeans服务区域启动GlassFish服务器时,都会出现以下错误:

无法启动GlassFish Server 4.1:HTTP或HTTPS侦听器端口被占用,而服务器未运行

因此,我使用以下命令:

netstat -ano | find "1527"

查找占用该端口的进程,并且似乎是GlassFish进程刚刚启动的Java Derby数据库本身在占用该端口。所以GlassFish启动过程抱怨它自己导致的问题。奇怪。我不知道该怎么办。有人有什么想法吗?

先谢谢。

10个回答

20

我也遇到了这个问题,原因是有一个应用程序正在监听8080端口。为了解决这个问题,我按照以下步骤进行:

  1. 打开cmd.exe,然后输入

    netstat -aon | find ":8080" | find "LISTENING"

  2. 你会看到以下结果:

    TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 1464

  3. 复制PID“1464”。

  4. 打开任务管理器(Ctrl+Alt+del),进入详细信息标签,然后通过PID查找正在监听8080端口的程序或服务,然后停止它或结束进程。


14

您的描述有点奇怪,因为GlassFish服务器即使端口1527被占用也可以启动,因为Java Derby数据库是一个独立的Java进程。因此,一种选择就是在确保真正的GlassFish服务器正在正确启动(NetBeans会在不同的选项卡中显示GlassFish服务器和Derby服务器的输出)的情况下忽略该消息。

尽管如此,您可以尝试禁用GlassFish实例的注册Derby服务器。

确保Derby服务器已关闭,即使您已关闭NetBeans,它仍然可能在运行。如果您不确定,请通过任务管理器杀死每个Java进程并重新启动NetBeans。

服务选项卡中右键单击您的GlassFish实例,然后选择属性

disable derby server start

如果真正的问题是端口8080或443(如果您激活了HTTPS侦听器)正在使用(这确实会阻止GlassFish启动),您必须找出哪个应用程序正在使用此端口(可能是Tomcat或类似的东西)并将其关闭。

错误信息:

'Could not start GlassFish Server 4.1: HTTP or HTTPS listener port is occupied while server is not running'

只是稍微指向了这个方向...


1
亲爱的unwichtich,你是对的:这与Derby服务器无关。在Glassfish属性中取消勾选该框不是解决方案。检查端口8080是。由于我是LabView用户,我的PC上运行着National Instruments的东西。其中之一是National的ApplicationServer,它锁定了端口8080……所以你的提示做到了。不知道为什么我专注于端口1527,也许是因为我是一个完全的Glassfish新手。 - Dominique Bijnens
1
谢谢,阅读了您的答案后,我知道我的8080端口被Tomcat服务器使用。非常感谢。 - Yohanim
1
@DominiqueBijnens 谢谢。我也遇到了同样的问题。为了找到这个服务,我使用了 [http://stackoverflow.com/a/25096959/2278538] 的评论来找到该服务以便停止它。 - KSK

11

当我在同一台机器上运行Oracle XE实例时,我得到相同的错误。 由于我的数据库是Oracle,所以我更喜欢更改Glassfish的默认端口:

  1. 在Glassfish安装文件夹中找到domain.xml。
  2. 更改以下行中的端口:

  <network-listener port="9090" protocol="http-listener-1" transport="tcp" name="http-listener-1" thread-pool="http-thread-pool"></network-listener>
        


执行以上步骤,删除现有的GlassFish服务器并添加新的具有更改端口的相同服务器。 - Akash Martin

8
你可以通过改变glassfish的端口号来轻松解决这个问题。
进入glassfish配置文件domain.xml,该文件位于GlassFish_Server\glassfish\domains\domain1\config目录下。
打开这个文件,然后更改以下行:
<network-listener port="8080" protocol="http-listener-1" transport="tcp" 
name="http-listener-1" thread-pool="http-thread-pool"></network-listener>  

例如,将8080替换为9090,然后保存文件并重新运行glassfish。这样应该能够正常工作。


6
您会遇到类似这样的错误:

error ss

请尝试以下步骤

1. 打开命令提示符(按Windows键并输入“cmd”,然后按Enter键) 然后像图片中显示的那样输入此命令

netstat -aon | find ":8080" | find "LISTENING" cmd command

  1. 现在打开任务管理器(按Windows键并键入“任务管理器”,然后按Enter键) 在那里,转到详细信息选项卡,在PID列下查找您在cmd中找到的号码

task manager

  1. 右键单击该程序,然后选择结束进程

5
我有同样的问题。我的问题是由vmware安装引起的。我使用的是Windows 7上的vmware worstation v8,并且是默认安装。从命令提示符中运行netstat -aon | find“:80”| find“LISTENING”显示了导致问题的服务PID,这与vmware有关。进入服务管理器,我手动停止了所有正在运行的vmware服务(没有更改它们的启动类型,只是手动停止 - 我希望它们在下次重新启动后能正常工作),然后我可以立即测试我的WebService,Glassfish 4如预期般启动。
希望这可以帮助到你。

非常感谢!在我的情况下,问题出在 Skype 上。您输入的命令解决了我的问题。 - malarres
当使用上述方法找到PID时,您还可以启动“任务管理器”(ctrl+alt+delete),转到“服务”选项卡,单击列名“PID”(这将按PID重新排序表中的行),找到具有netstat显示的PID的进程。右键单击该行并选择“停止服务”。 - Developer Marius Žilėnas
@James 我尝试了你建议的 "netstat ...",它返回了:"TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 4988"。你知道这是什么意思吗? - KSK

3

您可以通过更改Glassfish的端口号来解决此错误,因为WAMP SERVER或ORACLE数据库软件使用端口号8080,所以存在端口号冲突。

1)打开路径,例如C:\GlassFish_Server\glassfish\domains\domain1\config\domain.xml。

2)使用ctrl+F查找8080端口号。您将获得以下代码...

<network-listener protocol="http-listener-1" port="8080" name="http-listener-1" thread-pool="http-thread-pool" transport="tcp">

3) 将端口号从8080更改为9090、1234或其他您喜欢的端口号。

4) 保存更改。打开Netbeans IDE并进入Glassfish服务器。

5) 右键单击服务器->选择刷新选项。

6) 要检查您所输入的端口号,请右键单击服务器->属性。

7) 启动Glassfish服务器。恭喜,错误已经消除。


2

如果您使用的是NetBeans 7及以上版本,并且使用Oracle XE,请按照以下步骤在NetBeans中进行操作:

  1. 进入“服务”选项卡
  2. 在“服务器”下,删除GlassFish
  3. 重新添加GlassFish服务器
  4. 为HTTP访问输入端口号9090

如果可用,则GlassFish可以使用该端口号,否则会创建一些随机端口号。


1
以下是一定有效的步骤:
  1. 打开CMD:从键盘按下Windows+R或在Windows搜索中键入“cmd”
  2. 在CMD中输入以下内容:netstat -aon | find ":8080" | find "LISTENING"
  3. 查看最后一列:会有一些数字,如2816或类似(它将与此不同)
  4. 现在打开任务管理器(键盘快捷键:Ctrl + Shift + Esc
  5. 在其中,转到详细信息选项卡,在PID列下,搜索您在第3步中找到的数字
  6. 右键单击它并选择结束进程
  7. 现在可以愉快地去Netbeans运行程序了
注意:如果您在Netbeans中首次运行程序,需要一些时间。所以如果需要时间,请不要担心。

0

我找到了一个更简单的方法来解决这个令人烦恼的问题。 在不设置用户名/密码的情况下注册GlassFish服务器。 然后右键单击GlassFish,然后转到查看域管理控制台。在出现的Glassfish管理员页面上,您将在GlassFish Console- Common Tasks下的Administration下看到更改管理员密码。单击以通过更改默认密码设置密码。用户为admin,但密码由您更改。保存更改。返回Netbeans,您将立即看到一个弹出屏幕,要求您输入管理员凭据。输入用户为admin和密码。就是这样。如果您的Netbeans带有Glassfish,则只需右键单击服务器,然后转到查看域管理控制台,然后按照上述步骤进行操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接