Getting java.net.SocketException
when trying to start a multicast provider:
2013-09-11 11:45:44,204 [main] ERROR net.sf.ehcache.distribution.MulticastRMICacheManagerPeerProvider: Error starting heartbeat. Error was: Can't assign requested address java.net.SocketException: Can't assign requested address at java.net.PlainDatagramSocketImpl.join(Native Method) at java.net.AbstractPlainDatagramSocketImpl.join(AbstractPlainDatagramSocketImpl.java:178) at java.net.MulticastSocket.joinGroup(MulticastSocket.java:319) at net.sf.ehcache.distribution.MulticastKeepaliveHeartbeatReceiver.init(MulticastKeepaliveHeartbeatReceiver.java:88) at net.sf.ehcache.distribution.MulticastRMICacheManagerPeerProvider.init(MulticastRMICacheManagerPeerProvider.java:95)
This was caused by an IPv6 address being returned from java.net.NetworkInterface.getDefault()
. I'm on a Macbook and was using wireless -- p2p0 (used for AirDrop) was returned as the default network interface but my p2p0 only has an IPv6 ether
entry (found by running ipconfig
).
Two solutions, both of which worked for me (I prefer the first because it works whether you are using a wired or wireless connection)
-Djava.net.preferIPv4Stack=true
. This caused java.net.NetworkInterface.getDefault()
to return my vboxnet0 network interface -- not sure what you'll get if you're not running a host-only VM.A slight variation on the accepted answer: You can also add the following line of code to your java code:
System.setProperty("java.net.preferIPv4Stack", "true");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With