启动Oracle Coherence时出现SocketException

时间:2015-04-13 15:36:31

标签: java oracle-coherence

尝试在开发模式下运行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

1 个答案:

答案 0 :(得分:3)

第一个停靠点,一如既往地是Google

这导致JDK bug,后来证明是another bug的副本,希望能够解答您的具体问题。