This error generally occurs when your operating system supports IPv6 and Java has defaulted to use it instead of IPv4 and manifests the most on *nix distributions for any version of Java, and Windows 7 starting with Java 7.

An example of this problem occurs when running mvn site:run under Java 7:

Caused by: org.apache.maven.plugin.MojoExecutionException: Error
executing Jetty: Unable to establish loopback connection
        at org.apache.maven.plugins.site.SiteRunMojo.execute(SiteRunMojo.java:108)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
        ... 19 more
Caused by: java.io.IOException: Unable to establish loopback connection
        at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:125)
        at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:69)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.nio.ch.PipeImpl.<init>(PipeImpl.java:141)
        at sun.nio.ch.SelectorProviderImpl.openPipe(SelectorProviderImpl.java:50)
        at java.nio.channels.Pipe.open(Pipe.java:150)
        at sun.nio.ch.WindowsSelectorImpl.<init>(WindowsSelectorImpl.java:126)
        at sun.nio.ch.WindowsSelectorProvider.openSelector(WindowsSelectorProvider.java:44)
        at java.nio.channels.Selector.open(Selector.java:227)
        at org.mortbay.io.nio.SelectorManager$SelectSet.<init>(SelectorManager.java:313)
        at org.mortbay.io.nio.SelectorManager.doStart(SelectorManager.java:224)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.mortbay.jetty.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:314)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.mortbay.jetty.Server.doStart(Server.java:235)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.apache.maven.plugins.site.SiteRunMojo.execute(SiteRunMojo.java:104)
        ... 21 more
Caused by: java.net.ConnectException: Connection refused: connect
        at sun.nio.ch.Net.connect0(Native Method)
        at sun.nio.ch.Net.connect(Net.java:364)
        at sun.nio.ch.Net.connect(Net.java:356)
        at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:623)
        at java.nio.channels.SocketChannel.open(SocketChannel.java:184)
        at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:97)
        ... 37 more

The workaround is to tell Java to prefer IPv4 via the JVM argument -Djava.net.preferIPv4Stack=true.

Add this option to MAVEN_OPTS to have this permanently applied to Maven commands.

  • No labels