部署错误:启动Tomcat失败,服务器端口8080已被使用
当我运行我的Java项目使用netbeans我得到以下错误:
Deployment error: Starting of Tomcat failed, the server port 8080 is already in use. See the server log for details. at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:166) at org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:104) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) at sun.reflect.GeneratedMethodAccessor619.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:357) at org.apache.tools.ant.Target.performTasks(Target.java:385) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329) at org.apache.tools.ant.Project.executeTarget(Project.java:1298) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1181) at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:277) at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:460) at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:151) Caused by: org.netbeans.modules.j2ee.deployment.impl.ServerException: Starting of Tomcat failed, the server port 8080 is already in use. at org.netbeans.modules.j2ee.deployment.impl.ServerInstance._start(ServerInstance.java:1297) at org.netbeans.modules.j2ee.deployment.impl.ServerInstance.startTarget(ServerInstance.java:1251) at org.netbeans.modules.j2ee.deployment.impl.ServerInstance.startTarget(ServerInstance.java:1062) at org.netbeans.modules.j2ee.deployment.impl.ServerInstance.start(ServerInstance.java:939) at org.netbeans.modules.j2ee.deployment.impl.TargetServer.startTargets(TargetServer.java:428) at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:143) ... 16 more BUILD FAILED (total time: 4 seconds)
我尝试更改服务器端口为8081和closures端口在工具 – >服务器,它运行良好,但如果我做了任何操作,并运行项目它说:“ 部署错误:启动Tomcat失败,服务器端口8081已被使用 “任何人都可以帮助我解决问题。
转到命令提示符
netstat -aon
为linux
netstat -tulpn | grep 'your_port_number'
它会告诉你一些像
TCP 192.1.200.48:2053 24.43.246.60:443 ESTABLISHED 248 TCP 192.1.200.48:2055 24.43.246.60:443 ESTABLISHED 248 TCP 192.1.200.48:2126 213.146.189.201:12350 ESTABLISHED 1308 TCP 192.1.200.48:3918 192.1.200.2:8073 ESTABLISHED 1504 TCP 192.1.200.48:3975 192.1.200.11:49892 TIME_WAIT 0 TCP 192.1.200.48:3976 192.1.200.11:49892 TIME_WAIT 0 TCP 192.1.200.48:4039 209.85.153.100:80 ESTABLISHED 248 TCP 192.1.200.48:8080 209.85.153.100:80 ESTABLISHED 248
检查哪个进程绑定了您的端口。 在上面的例子中,如果你确定需要杀死那个进程,
Linux的:
kill -9 248
视窗:
taskkill /f /pid 248
它会杀死这个过程
我尝试部署时遇到同样的问题,因为Tomcat实例正在运行,tomcat无法重新启动。 closuresIDE并检查TASKpipe理器 – 杀死任何正在运行的javaw进程,这为我解决了这个问题。
如果你在代理服务器后面,这个问题可能发生,我有同样的问题,并解决了:首选项 – >常规 – >代理服务器设置 – >没有代理服务器。
“也许tomcat就绪消息已经发送到代理服务器了 – 从来没有到达IDE。”
发现@: https : //netbeans.org/bugzilla/show_bug.cgi?id = 231220
看看你正在运行的进程,看起来你现在的Tomcat实例并没有停止。 它仍在运行,NetBeans尝试启动第二个Tomcat实例。 这就是你的例外的原因,你只需要停止第一个实例,或者在当前运行的代码上部署代码
通过在netbeans中将代理设置更改为“no proxy”,tomcat prbolem得到了解决。试试这个工作正常。
如果在Linux上,你可以用这个脚本杀死现有的Tomcat
#/bin/bash if [ `whoami` != root ]; then echo "Please run this script as root or using sudo" exit fi echo echo "finding proceses that have name java and established connections status" echo echo "Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name" netstat --tcp --programs | grep "ESTABLISHED" | grep "java" echo echo "finding proceses that use port 8080 or http-alt" echo netstat --tcp --programs | grep ':8080\|:http-alt' echo -n "Do you wish to kill a process listed above?[Y/n]" read choose if [ "$choose" = "Y" ] || [ "$choose" = "y" ] || [ -z "$choose" ] then echo "enter pid to kill" read procesId kill -9 $procesId fi echo "done exiting" exit 0
杀死以前的tomcat实例或8080上运行的进程。
去terminal,并做到这一点:
lsof -i :8080
输出结果如下所示:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 76746 YourName 57u IPv6 0xd2a83c9c1e75 0t0 TCP *:http-alt (LISTEN)
使用它的PID来杀死这个进程:
kill 76746
select项目 – >右键单击 – > 清理并构build ,然后再次运行项目,只需为我解决问题。
因为,多个进程可以绑定相同的端口,例如端口8086,在这种情况下,我必须杀死与PID端口有关的所有进程。 这可能是麻烦的。
我有一个类似的问题,除了80端口已经被使用。 原来是微软的IIS服务。 我根本不使用它们,只是通过appwiz.cpl卸载它们。
将您的Tomcat
端口地址更改为8084
并将Shut Down Port
至8025
。 这解决了你的问题。
在我的情况下,我不小心添加了两个服务器的实例,并得到这个错误..只要看看在Servers
下的Services
选项卡,并删除其中一个实例…并重新启动服务器… 🙂
我已经解决了这个问题,在Windows 8.1 x64。
- goto –
%userprofile%\AppData\Roaming\NetBeans\8.1\apache-tomcat-8.0.27.0_base\work\Catalina\localhost
- 删除没有(经理和ROOT)文件夹的所有文件夹
- goto –
%userprofile%\AppData\Roaming\NetBeans\8.1\apache-tomcat-8.0.27.0_base\conf\Catalina\localhost
- 删除所有文件(
manager.xml
和ROOT.xml
) - 转到NetBeans和启动Tomcat服务器