2011-03-15 159 views
34

当我运行使用NetBeans我碰到下面的错误我的Java项目:部署错误:的Tomcat启动失败,服务器端口8080已在使用

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和关机端口工具 - >服务器, 它运行良好,但再次,如果我做任何操作和 它说运行项目“部署错误:Tomcat的启动的失败,服务器端口8081已在使用” 会是什么问题可以帮助我。

+0

? – 2011-03-15 11:24:06

回答

96

转到命令提示符

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 

检查哪个进程绑定你的端口。这里在上面的例子中其248现在,如果你确信你需要杀掉该进程火

的Linux:

kill -9 248 

的Windows:

taskkill /f /pid 248 

它会杀死该进程

+4

完美答案!谢谢! – lamostreta 2011-12-27 07:48:48

+1

谢谢soooooooo多! – 2014-06-11 14:40:35

+1

Mac OS的命令是什么? – Szu 2014-09-04 12:04:48

4

看看你正在运行的进程,看起来你的当前Tomcat实例并没有停止。它仍在运行,NetBeans尝试启动第二个Tomcat实例。 这就是你的例外的原因,你只需要停止第一个实例,或在当前运行的代码上部署代码

+2

或向nb开发人员提出问题,以便您和任何可能遇到此问题的人员妥善解决问题。 – vkraemer 2011-03-16 04:43:22

6

我尝试部署时遇到同样的问题,因为Tomcat实例正在运行时,tomcat无法重新启动。关闭IDE并检查任务管理器 - 终止任何正在运行的javaw进程,这为我解决了这个问题。

3

如果在Linux上,你可以杀了现有的这个脚本雄猫

#/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 
+3

“在Ubuntu或Linux上”我死了一点...... – Benedictus 2015-02-25 19:22:33

+0

@ElberCM改变实质性内容不是'修复语法'。 – EJP 2016-02-03 20:10:42

7

如果您是使用代理服务器这个问题可能发生 我有同样的问题,并通过解决: 首选项 - >常规 - >代理设置 - >没有代理。

“也许tomcat就绪消息已发送到代理服务器 - 并且从未到达IDE。”

发现@:https://netbeans.org/bugzilla/show_bug.cgi?id=231220

+0

+1我在NetBeans中使用系统代理设置,启动Fiddler(修改系统代理设置),它工作得很好。然后重新启动NetBeans,并获得“启动Tomcat失败,服务器端口8084已被使用。” – anre 2015-02-28 00:15:13

4

通过更改代理服务器设置在NetBeans tomcat的prbolem得到solved.Try这它的工作认真“无代理”。

+0

很好!有效! – 2015-07-02 05:15:07

-1

我在Windows 8.1 x64中修复了这个问题。

  1. 转到 - %userprofile%\AppData\Roaming\NetBeans\8.1\apache-tomcat-8.0.27.0_base\work\Catalina\localhost
  2. 删除所有文件夹没有(经理和ROOT)文件夹
  3. 转到 - %userprofile%\AppData\Roaming\NetBeans\8.1\apache-tomcat-8.0.27.0_base\conf\Catalina\localhost
  4. 删除所有文件,而不(manager.xmlROOT.xml
  5. 转到NetBeans和启动Tomcat服务器
0

我有一个类似的问题,除了它的端口80是已在使用中。原来是微软IIS服务。我根本不使用它们,只是通过appwiz.cpl卸载它们。

0

将您的Tomcat端口地址更改为8084Shut Down Port8025。这解决了你的问题。

2

杀死Tomcat或过程的前一个实例是对8080

去跑步终端和这样做:

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

0

在我来说,我不小心添加的服务器的两个实例,并得到这个错误.. 只要看看在Services标签Servers下,并删除该实例之一,另外,重新启动服务器... :)

1

选择项目 - >右键单击 - >清理并生成然后再次运行该项目只需为我解决问题。因为多个进程可以绑定相同的端口,例如端口8086,在这种情况下,我必须使用PID来终止与端口有关的所有进程。这可能很麻烦。

0

改变[tomcat_home_dir]你的默认端口/conf/server.xml 找到你所运行的操作系统它

<Connector port="8080" protocol="HTTP/1.1" 
       connectionTimeout="20000" 
       redirectPort="8443" /> 

变化

<Connector port="8090" protocol="HTTP/1.1" 
       connectionTimeout="20000" 
       redirectPort="8443" /> 
相关问题