2011-03-15 795 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" />