尝试在开发模式下运行Oracle Coherence服务器,我得到:
2015-04-09 09:56:28.319/1.508 Oracle Coherence GE 12.1.3.0.0 <D4>(thread=main,member=n/a): TCMP bound to /xx.xx.49.22:8088 using SystemDatagramSocketProvider
Exception in thread "main" 2015-04-09 09:56:28.356/1.545 Oracle Coherence GE 12.1.3.0.0 <Error> (thread=main, member=n/a): Error while starting cluster
(Wrapped) java.net.SocketException: An invalid argument was supplied
at com.tangosol.util.Base.ensureRuntimeException(Base.java:289)
...
at com.tangosol.net.DefaultCacheServer.main(DefaultCacheServer.java:355)
Caused by: java.net.SocketException: An invalid argument was supplied
at java.net.TwoStacksPlainDatagramSocketImpl.socketNativeSetOption(Native Method)
...
at com.tangosol.coherence.component.net.Cluster.onStart(Cluster.CDB:37)
Java新手,Coherence新手。因此套接字异常意味着创建或连接到套接字时出错。我在这种情况下猜测问题是创建套接字?我应该寻找的一些东西是什么?
编辑:经过更多的研究,我不断看到IPv4与IPv6的关系。似乎TwoStacksPlainDatagramSocketImpl增加了对IPv6的支持。我目前正在查看我的IP本地设置。EDIT2:感谢biziclop提供了一些明显的(通过谷歌)解决方案。在您的网络上禁用IPv6时,最新的Java版本会出现抛出SocketException的错误。
这可以通过以下方式解决:-Djava.net.preferIPv4Stack = true