1. 程式人生 > >tomcat啟動異常:Address already in use: JVM_Bind

tomcat啟動異常:Address already in use: JVM_Bind

悲催啊大哭,水平太差了哭,一個小問題糾結了好久。。。。總結下解決過程吧,還是多虧了度娘和好多前人的帖子哎。。。。

2011-8-3 19:22:00 org.apache.catalina.core.AprLifecycleListener init
資訊: The APR based Apache Tomcat Native library which allows optimal performanc
e in production environments was not found on the java.library.path: G:\Program
Files\Apache Software Foundation\Tomcat 6.0\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WIN
DOWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
;D:\oracle\product\10.1.0\db_1\bin;D:\oracle\product\10.1.0\db_1\jre\1.4.2\bin\c
lient;D:\oracle\product\10.1.0\db_1\jre\1.4.2\bin;E:\jdk1.6_update10\bin;
2011-8-3 19:22:00 org.apache.coyote.http11.Http11Protocol init
嚴重: Error initializing endpoint
java.net.BindException: Address already in use: JVM_Bind<null>:8080
        at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:509)
        at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:176)

        at org.apache.catalina.connector.Connector.initialize(Connector.java:105
8)
        at org.apache.catalina.core.StandardService.initialize(StandardService.j
ava:677)
        at org.apache.catalina.core.StandardServer.initialize(StandardServer.jav
a:795)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:535)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:555)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412)
2011-8-3 19:22:00 org.apache.catalina.startup.Catalina load
嚴重: Catalina.start
LifecycleException:  Protocol handler initialization failed: java.net.BindExcept
ion: Address already in use: JVM_Bind<null>:8080
        at org.apache.catalina.connector.Connector.initialize(Connector.java:106
0)
        at org.apache.catalina.core.StandardService.initialize(StandardService.j
ava:677)
        at org.apache.catalina.core.StandardServer.initialize(StandardServer.jav
a:795)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:535)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:555)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412)
2011-8-3 19:22:00 org.apache.catalina.startup.Catalina load
資訊: Initialization processed in 709 ms
2011-8-3 19:22:00 org.apache.catalina.core.StandardService start
資訊: Starting service Catalina
2011-8-3 19:22:00 org.apache.catalina.core.StandardEngine start
資訊: Starting Servlet Engine: Apache Tomcat/6.0.20
2011-8-3 19:22:01 org.apache.coyote.http11.Http11Protocol start
嚴重: Error starting endpoint
java.net.BindException: Address already in use: JVM_Bind<null>:8080
        at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:509)
        at org.apache.tomcat.util.net.JIoEndpoint.start(JIoEndpoint.java:526)
        at org.apache.coyote.http11.Http11Protocol.start(Http11Protocol.java:203
)
        at org.apache.catalina.connector.Connector.start(Connector.java:1131)
        at org.apache.catalina.core.StandardService.start(StandardService.java:5
31)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:710
)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2011-8-3 19:22:01 org.apache.catalina.startup.Catalina start
嚴重: Catalina.start:
LifecycleException:  service.getName(): "Catalina";  Protocol handler start fail
ed: java.net.BindException: Address already in use: JVM_Bind<null>:8080
        at org.apache.catalina.connector.Connector.start(Connector.java:1138)
        at org.apache.catalina.core.StandardService.start(StandardService.java:5
31)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:710
)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2011-8-3 19:22:01 org.apache.catalina.startup.Catalina start
資訊: Server startup in 1115 ms

啟動tomcat出現上面錯誤,Address already in use: JVM_Bind,一查,是8080埠號被佔用了。

首先,查到底是哪個敗家的程序佔了8080。猶豫哀家水平比較菜,不知道怎麼找到這個敗家的程序。一頓百度之後找到解決方法。開啟cmd,輸入netstat -ano,發現PID944號佔用了,在cmd中輸入tasklist,看到原來是TNSLSNR.exe。這是個神馬?原來它是oracle10g裡的。。。。。汗啊。。。。。

然後,改吧,把這個敗家程序的埠號改成8081吧:

用oracle提供的包:
-- 把HTTP/WEBDAV埠從8080改到8081
SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(),
'/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()',8081))
/
-- 把FTP埠從2100改到2111
SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(),
'/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text()',2111))
/
SQL> commit;
SQL> exec dbms_xdb.cfg_refresh;
-- 檢查修改是否已經成功
SQL> select dbms_xdb.cfg_get from dual;

哦了。。。。這樣就終於改好了。。。。。

中間還出現了小插曲,就是我的cmd竟然不能用了,哎,當初裝jdk改path時候把原來的給刪了,加上吧:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;D:\oracle\product\10.1.0\db_1\bin;D:\oracle\product\10.1.0\db_1\jre\1.4.2\bin\client;D:\oracle\product\10.1.0\db_1\jre\1.4.2\bin;E:\jdk1.6_update10\bin;

終於弄好了,心情舒暢~微笑