今天下午本機啟動tomcat的時候遇到了一個問題腻惠。
嚴重: StandardServer.await: create[localhost:8005]:
java.net.BindException: Can't assign requested address
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:382)
at java.net.ServerSocket.bind(ServerSocket.java:375)
at java.net.ServerSocket.<init>(ServerSocket.java:237)
at org.apache.catalina.core.StandardServer.await(StandardServer.java:438)
at org.apache.catalina.startup.Catalina.await(Catalina.java:717)
at org.apache.catalina.startup.Catalina.start(Catalina.java:663)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
嚴重: Failed to destroy end point associated with ProtocolHandler ["http-nio-8080"]
java.io.IOException: Thread signal failed
at sun.nio.ch.NativeThread.signal(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.implCloseSelectableChannel(ServerSocketChannelImpl.java:292)
at java.nio.channels.spi.AbstractSelectableChannel.implCloseChannel(AbstractSelectableChannel.java:234)
at java.nio.channels.spi.AbstractInterruptibleChannel.close(AbstractInterruptibleChannel.java:115)
at sun.nio.ch.ServerSocketAdaptor.close(ServerSocketAdaptor.java:137)
at org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:488)
at org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:821)
at org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:534)
at org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1023)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:589)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:877)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
at org.apache.catalina.startup.Catalina.stop(Catalina.java:703)
at org.apache.catalina.startup.Catalina.start(Catalina.java:664)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
這種問題一般是由于 Mac 下 /etc/hosts文件的問題捉邢,可能是添加了無法解析綁定的ip盖桥。我的問題是host的軟件將自身文件中的localhost ip改成了127.0.0.0。正常應該是127.0.0.1狠裹。
LookBack地址
特殊的IP地址段:
127.x.x.x
這是大家最熟悉不過的本地loopback地址病蛉,在windows和linux上等價于localhost。
我們習慣于使用127.0.0.1窟哺,實際上泻轰,
如果你在命令行下ping 127.0.0.1-127.255.255.254之間的任意地址,結果都是一樣的且轨,它們是等價的浮声。
正常的網(wǎng)絡包從ip層進入鏈路層,然后發(fā)送到網(wǎng)絡上殖告,
而發(fā)向loopback地址的包阿蝶,直接在IP層短路了,也就是發(fā)到IP層的包直接被IP層接收了黄绩,不再向下發(fā)送羡洁。