How can I disable IPv6 stack use for IPv4 IPs on JRE?

As you can see on below screenshots, eclipse and Android SDK Manager (and other Java programs) are trying to connect to a IPv4 Internet IP via IPv6 TCP/IP stack while Proxifier (a proxy manager program, nevermind) can not support that.

Eclipse failure in connecting to the InternetAndroid SDK Manager failure in connecting to the Internet

How I can disable IPv6 in Java?


Solution 1:

I wanted to use this for some program I hadn't control for running that Java app so ended with this _JAVA_OPTIONS=-Djava.net.preferIPv4Stack=true environment variable. (read about _JAVA_OPTIONS here)

If you are using Windows, just run this command on Windows cmd:
setx _JAVA_OPTIONS -Djava.net.preferIPv4Stack=true

Thanks to Jason Nichols for reminding this JVM argument :)

Solution 2:

Did you try (from the command line)

-Djava.net.preferIPv4Stack=true

or (from your code)

System.setProperty("java.net.preferIPv4Stack" , "true");

Solution 3:

Maybe a bit late but for me neither solution worked. So I included this option as it is stated here:

-Djava.net.preferIPv4Addresses=true

But also the followingI added line to the end of the file /etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6 = 1

And

sudo sysctl -p

as it is explained here. In order to check that ipv6 is disabled just execute:

ip a | grep inet