启动Tomcat时报如下错误:
严重: Error initializing endpoint
java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at java.net.ServerSocket.<init>(ServerSocket.java:141)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:50)
at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:538)
at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:176)
at org.apache.catalina.connector.Connector.initialize(Connector.java:1049)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:703)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:838)
at org.apache.catalina.startup.Catalina.load(Catalina.java:538)
at org.apache.catalina.startup.Catalina.load(Catalina.java:562)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2012-12-12 10:47:40 org.apache.catalina.core.StandardService initialize
严重: Failed to initialize connector [Connector[HTTP/1.1-80]]
LifecycleException: Protocol handler initialization failed: java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
at org.apache.catalina.connector.Connector.initialize(Connector.java:1051)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:703)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:838)
at org.apache.catalina.startup.Catalina.load(Catalina.java:538)
at org.apache.catalina.startup.Catalina.load(Catalina.java:562)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2012-12-12 10:47:40 org.apache.catalina.startup.Catalina load
出现这样的错误原因很明了:端口被占用。
端口被占用的话有2个方法:
1,修改Tomcat的端口:
tomcat目录下,conf目录下server.xml文件:
找到:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
把port改成别的就可以。
2,把占用端口的进程找到,并关闭它。
cmd进入命令行,找出所有占用的端口,根据结果中的pid找到改程序,然后关闭它。
操作如下:
C:\Users\lushuaiyin>netstat -ano 活动连接 协议 本地地址 外部地址 状态 PID TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 2940 TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 816 TCP 0.0.0.0:200 0.0.0.0:0 LISTENING 2940 TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4 TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING 2316 TCP 0.0.0.0:5560 0.0.0.0:0 LISTENING 2480 TCP 0.0.0.0:5580 0.0.0.0:0 LISTENING 2480 TCP 0.0.0.0:22105 0.0.0.0:0 LISTENING 1460 TCP 0.0.0.0:49152 0.0.0.0:0 LISTENING 472 TCP 0.0.0.0:49153 0.0.0.0:0 LISTENING 880 TCP 0.0.0.0:49155 0.0.0.0:0 LISTENING 976 TCP 0.0.0.0:49157 0.0.0.0:0 LISTENING 552 TCP 0.0.0.0:49158 0.0.0.0:0 LISTENING 2316 TCP 0.0.0.0:49159 0.0.0.0:0 LISTENING 2224 TCP 0.0.0.0:49160 0.0.0.0:0 LISTENING 2224 TCP 0.0.0.0:49188 0.0.0.0:0 LISTENING 528 TCP 0.0.0.0:49193 0.0.0.0:0 LISTENING 4060 TCP 0.0.0.0:60000 0.0.0.0:0 LISTENING 2604 TCP 10.24.8.210:139 0.0.0.0:0 LISTENING 4 TCP 10.24.8.210:50682 58.83.159.11:80 CLOSE_WAIT 6572 TCP 10.24.8.210:50683 58.83.159.11:80 CLOSE_WAIT 6572 TCP 10.24.8.210:50870 58.83.159.12:80 CLOSE_WAIT 3108 TCP 10.24.8.210:50871 58.83.159.12:80 CLOSE_WAIT 3108 TCP 10.24.8.210:50988 58.83.159.12:80 CLOSE_WAIT 5020 TCP 10.24.8.210:50989 58.83.159.12:80 CLOSE_WAIT 5020 TCP 10.24.8.210:50998 125.39.229.82:80 CLOSE_WAIT 5020 TCP 10.24.8.210:51042 125.39.229.84:80 CLOSE_WAIT 5020 TCP 10.24.8.210:51971 119.75.219.45:80 CLOSE_WAIT 1176 TCP 10.24.8.210:51986 180.149.131.33:80 CLOSE_WAIT 1176 TCP 10.24.8.210:52166 119.147.12.67:80 CLOSE_WAIT 3108 TCP 10.24.8.210:52167 119.147.12.67:80 CLOSE_WAIT 3108 TCP 10.24.8.210:52172 10.23.134.10:288 TIME_WAIT 0 TCP 10.24.8.210:52174 10.23.134.10:288 TIME_WAIT 0 TCP 10.24.8.210:52183 10.23.134.10:288 TIME_WAIT 0 TCP 10.24.8.210:52191 10.23.134.10:288 TIME_WAIT 0 TCP 10.24.8.210:52192 10.23.134.10:288 TIME_WAIT 0 TCP 10.24.8.210:52198 119.147.193.92:80 ESTABLISHED 3108 TCP 10.24.8.210:52199 119.147.193.92:80 ESTABLISHED 3108 TCP 10.24.8.210:52201 10.23.134.10:288 TIME_WAIT 0 TCP 127.0.0.1:61100 0.0.0.0:0 LISTENING 2224 TCP [::]:135 [::]:0 LISTENING 816 TCP [::]:445 [::]:0 LISTENING 4 TCP [::]:49152 [::]:0 LISTENING 472 TCP [::]:49153 [::]:0 LISTENING 880 TCP [::]:49155 [::]:0 LISTENING 976 TCP [::]:49157 [::]:0 LISTENING 552 TCP [::]:49188 [::]:0 LISTENING 528 TCP [::]:49193 [::]:0 LISTENING 4060 TCP [::]:60000 [::]:0 LISTENING 2604 UDP 0.0.0.0:500 *:* 976 UDP 0.0.0.0:1004 *:* 2940 UDP 0.0.0.0:3600 *:* 2784 UDP 0.0.0.0:4000 *:* 544 UDP 0.0.0.0:4001 *:* 544 UDP 0.0.0.0:4002 *:* 6512 UDP 0.0.0.0:4003 *:* 6852 UDP 0.0.0.0:4004 *:* 6852 UDP 0.0.0.0:4005 *:* 6512 UDP 0.0.0.0:4006 *:* 544 UDP 0.0.0.0:4007 *:* 6852 UDP 0.0.0.0:4008 *:* 6512 UDP 0.0.0.0:4500 *:* 976 UDP 0.0.0.0:5355 *:* 1356 UDP 0.0.0.0:15000 *:* 2940 UDP 0.0.0.0:15005 *:* 2940 UDP 0.0.0.0:19635 *:* 2940 UDP 0.0.0.0:22105 *:* 1460 UDP 0.0.0.0:22106 *:* 1460 UDP 0.0.0.0:49774 *:* 6512 UDP 0.0.0.0:50526 *:* 1176 UDP 0.0.0.0:51893 *:* 6572 UDP 0.0.0.0:52625 *:* 6512 UDP 0.0.0.0:53049 *:* 3148 UDP 0.0.0.0:54339 *:* 2784 UDP 0.0.0.0:54520 *:* 6512 UDP 0.0.0.0:54953 *:* 3508 UDP 0.0.0.0:56737 *:* 6512 UDP 0.0.0.0:57100 *:* 1176 UDP 0.0.0.0:57271 *:* 544 UDP 0.0.0.0:57272 *:* 544 UDP 0.0.0.0:57389 *:* 3148 UDP 0.0.0.0:57876 *:* 3108 UDP 0.0.0.0:58766 *:* 6852 UDP 0.0.0.0:58767 *:* 6852 UDP 0.0.0.0:58768 *:* 6852 UDP 0.0.0.0:58831 *:* 6852 UDP 0.0.0.0:59960 *:* 2940 UDP 0.0.0.0:62541 *:* 5852 UDP 0.0.0.0:62855 *:* 6512 UDP 0.0.0.0:63065 *:* 6512 UDP 0.0.0.0:63421 *:* 6512 UDP 0.0.0.0:63945 *:* 8392 UDP 0.0.0.0:64374 *:* 6512 UDP 0.0.0.0:64503 *:* 2940 UDP 0.0.0.0:65186 *:* 5020 UDP 0.0.0.0:65282 *:* 2940 UDP 0.0.0.0:65330 *:* 544 UDP 0.0.0.0:65430 *:* 6084 UDP 10.24.8.210:137 *:* 4 UDP 10.24.8.210:138 *:* 4 UDP 10.24.8.210:1900 *:* 2004 UDP 10.24.8.210:57879 *:* 2004 UDP 127.0.0.1:1900 *:* 2004 UDP 127.0.0.1:49524 *:* 6504 UDP 127.0.0.1:50500 *:* 3108 UDP 127.0.0.1:52135 *:* 3508 UDP 127.0.0.1:53796 *:* 1356 UDP 127.0.0.1:54612 *:* 8392 UDP 127.0.0.1:56110 *:* 6512 UDP 127.0.0.1:56394 *:* 544 UDP 127.0.0.1:57880 *:* 2004 UDP 127.0.0.1:58219 *:* 3000 UDP 127.0.0.1:58627 *:* 2964 UDP 127.0.0.1:60669 *:* 2940 UDP 127.0.0.1:61955 *:* 5020 UDP 127.0.0.1:62373 *:* 6572 UDP 127.0.0.1:62542 *:* 1176 UDP 127.0.0.1:62600 *:* 5144 UDP 127.0.0.1:64251 *:* 6852 UDP 127.0.0.1:64502 *:* 2784 UDP [::]:500 *:* 976 UDP [::]:4500 *:* 976 UDP [::]:5355 *:* 1356 UDP [::1]:1900 *:* 2004 UDP [::1]:57878 *:* 2004 UDP [fe80::7018:51c1:add8:f344%11]:546 *:* 880 UDP [fe80::7018:51c1:add8:f344%11]:1900 *:* 2004 UDP [fe80::7018:51c1:add8:f344%11]:57877 *:* 2004 C:\Users\lushuaiyin>tasklist|findstr "2940" WebThunder.exe 2940 Console 1 20,368 K C:\Users\lushuaiyin>
例如:我的tomcat使用80端口,使用第一个命令netstat -ano 列出所有端口的情况,找到IP后面是80的那一行。
它的PID是2940,再使用命令 tasklist|findstr "2940"
找到此程序是WebThunder.exe。原来是Web迅雷。
我们可以在任务管理器找到它,然后关闭。如果是个进程,在应用程序里找不到的话,就在进程里找,如果名字不太好找,就根据PID来找。
(在进程选项卡,用查看--选择列,把PID勾选,这样就出现PID了,把这个进程关闭)
--------------------------------------------------------------------------------------------------------------------------------------------
说到这里我们对NETSTAT这个cmd命令就要好好研究一下。
进入cmd,输入netstat -haha,后面是我乱输入的。
因为没有后面那个参数,所以就会有帮助信息输出:
C:\Users\lushuaiyin>netstat -haha 显示协议统计和当前 TCP/IP 网络连接。 NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval] -a 显示所有连接和侦听端口。 -b 显示在创建每个连接或侦听端口时涉及的可执行程序。 在某些情况下,已知可执行程序承载多个独立的 组件,这些情况下,显示创建连接或侦听端口时涉 及的组件序列。此情况下,可执行程序的名称 位于底部[]中,它调用的组件位于顶部,直至达 到 TCP/IP。注意,此选项可能很耗时,并且在您没有 足够权限时可能失败。 -e 显示以太网统计。此选项可以与 -s 选项结合使用。 -f 显示外部地址的完全限定域名(FQDN)。 -n 以数字形式显示地址和端口号。 -o 显示拥有的与每个连接关联的进程 ID。 -p proto 显示 proto 指定的协议的连接;proto 可以是下列任 何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s 选 项一起用来显示每个协议的统计,proto 可以是下列任 何一个: IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。 -r 显示路由表。 -s 显示每个协议的统计。默认情况下,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计;-p 选项可用于指定默认的子网。 -t 显示当前连接卸载状态。 interval 重新显示选定的统计,各个显示间暂停的间隔秒数。 按 CTRL+C 停止重新显示统计。如果省略,则 netstat 将打印当前的配置信息一次。 C:\Users\lushuaiyin>
根据帮助信息,我们对这个命令的功能和用法一目了然!怎么使用,自己试试看效果要比我说的好得多,有兴趣的话,试试看吧
还有另外一个命令tasklist
C:\Users\lushuaiyin>tasklist ddd 错误: 无效参数/选项 - 'ddd'。 键入 "TASKLIST /?" 以了解用法。 C:\Users\lushuaiyin>tasklist /? TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH] 描述: 该工具显示在本地或远程机器上当前运行的进程列表。 参数列表: /S system 指定连接到的远程系统。 /U [domain\]user 指定应该在哪个用户上下文执行这个命令。 /P [password] 为提供的用户上下文指定密码。如果省略,则 提示输入。 /M [module] 列出当前使用所给 exe/dll 名称的所有任务。 如果没有指定模块名称,显示所有加载的模块。 /SVC 显示每个进程中主持的服务。 /V 显示详述任务信息。 /FI filter 显示一系列符合筛选器指定的标准的任务。 /FO format 指定输出格式。 有效值: "TABLE"、"LIST"、"CSV"。 /NH 指定列标题不应该在输出中显示。 只对 "TABLE" 和 "CSV" 格式有效。 /? 显示帮助消息。 筛选器: 筛选器名 有效操作符 有效值 ----------- --------------- -------------------------- STATUS eq, ne RUNNING | NOT RESPONDING | UNKNOWN IMAGENAME eq, ne 映像名称 PID eq, ne, gt, lt, ge, le PID 值 SESSION eq, ne, gt, lt, ge, le 会话编号 SESSIONNAME eq, ne 会话名 CPUTIME eq, ne, gt, lt, ge, le CPU 时间,格式为 hh:mm:ss。 hh - 时, mm - 分,ss - 秒 MEMUSAGE eq, ne, gt, lt, ge, le 内存使用量,单位为 KB USERNAME eq, ne 用户名,格式为 [domain\]user SERVICES eq, ne 服务名称 WINDOWTITLE eq, ne 窗口标题 MODULES eq, ne DLL 名称 说明: 当查询远程机器时,不支持 "WINDOWTITLE" 和 "STATUS" 筛选器。 示例: TASKLIST TASKLIST /M TASKLIST /V /FO CSV TASKLIST /SVC /FO LIST TASKLIST /M wbem* TASKLIST /S system /FO LIST TASKLIST /S system /U domain\username /FO CSV /NH TASKLIST /S system /U username /P password /FO TABLE /NH TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running" C:\Users\lushuaiyin>