关于myeclipse10中配置tomcat7出现的问题

来源:互联网 发布:淘宝优惠券软件叫什么 编辑:程序博客网 时间:2024/05/23 17:30
在myeclipse10中配置tomcat7时,启动后出现这个错误。
org.apache.catalina.core.StandardServer await
严重:java.net.BindException: Cannot assign requested address: 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.(ServerSocket.java:185)
    at org.apache.catalina.core.StandardServer.await
(StandardServer.java:406)
    at org.apache.catalina.startup.Catalina.await
(Catalina.java:676)
    at org.apache.catalina.startup.Catalina.start
(Catalina.java:628)
    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.start
(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main
(Bootstrap.java:414)
我网上找个很多资料,开始没看清楚网上大部分的解释都是端口占用,或者是说环境
变量配置出错。我修改了端口,发现还是一样的错,尝试了好多次,
也修改好多次环境变量,也没用,问同学也不懂。都怪自己粗心,但终于发现了一个
问题:端口占用的错误是如下:
严重: StandardServer.await: create[8005]:
java.net.BindException: Address already in use
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365)
        at java.net.ServerSocket.bind(ServerSocket.java:319)
粗看都一样,其实一个是Address already in use,一个是cannot assign requested address。这是关键。
解决办法是:
将计算机的C:\Windows\System32\drivers\etc\hosts文件中的
localhost name resolution is handled within DNS itself.
#    127.0.0.1       localhost
#    ::1             localhost
127.0.0.1       localhost127.0.0.1       localhost
#google_android更新203.208.46.146 dl.google.com
203.208.46.146 dl-ssl.google.com127.0.0.1       localhost127.0.0.1     
 localhost
将#google_android更新
203.208.46.146 dl.google.com
203.208.46.146 dl-ssl.google.com
删掉。
203.208.46.146是一个不存在的本地IP地址,将hosts文件中的内容203.208.46.146
去掉后,再次启动Tomcat,发现运行正常!
Tomcat在启动时,会根据配置去获取所有的IP地址,并且进行逐个绑定,当发现需要
绑定的IP地址不存在时,将会触发上述异常,从而导致无法正常启动。
用下面的java代码可以输出localhost映射的所有IP地址
    InetAddress[] ips = InetAddress.getAllByName("localhost");
    if (ips != null) {
        for (InetAddress ip : ips) {
            System.out.println(ip.getHostAddress());
        }




0 0
原创粉丝点击