今天編寫好ICE的一個執行個體,一個很簡單的Hello World例子,在myeclipse中啟動並執行時候,出現了一個異常,異常資訊如下:
| Ice.SocketException error = 0 at IceInternal.Network.doBind(Network.java:249) at IceInternal.TcpAcceptor.<init>(TcpAcceptor.java:119) at IceInternal.TcpEndpointI.acceptor(TcpEndpointI.java:415) at IceInternal.IncomingConnectionFactory.<init>(IncomingConnectionFactory.java:378) at Ice.ObjectAdapterI.<init>(ObjectAdapterI.java:1028) at IceInternal.ObjectAdapterFactory.createObjectAdapter(ObjectAdapterFactory.java:160) at Ice.CommunicatorI.createObjectAdapterWithEndpoints(CommunicatorI.java:89) at demo.server.Server.main(Server.java:13) Caused by: java.net.SocketException: Address family not supported by protocol family: bind at sun.nio.ch.Net.bind(Native Method) at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source) at IceInternal.Network.doBind(Network.java:243) ... 7 more |
以前環境是沒有問題的,只是最近重新安裝了系統,重新運行執行個體就出現這樣的情況,在網上也沒有找到合適的答案,
異常中提示在這行除了問題,
| Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints( "SimplePrinterAdapter", "default -p 10000" ); |
使用一個指定的端點建立適配器的時候,報出異常,既然是綁定的問題,是不是綁定的資訊不全導致的。
然後直接在連接埠前面加上了IP資訊,改寫如下:
| Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints( "SimplePrinterAdapter", "default -h 127.0.0.1 -p 10000"); |
再運行就沒有什麼問題了,沒弄明白是怎麼回事。