OpenJDK 8:无法解析主机名 [英] OpenJDK 8: can't resolve hostname

查看:191
本文介绍了OpenJDK 8:无法解析主机名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在openJDK 8(Ubuntu 8u131-b11-0ubuntu1.17.04.1的最新版本)上使用log4j 2.8与slf4j一起运行.

I'm trying to run slf4j with log4j 2.8 on openJDK 8 (latest version on Ubuntu 8u131-b11-0ubuntu1.17.04.1).

通过maven openjdk运行简单的Java类时,无法解析本地主机名:

When running simple java class via maven openjdk is unable to resolve local hostname:

  Exception in thread "AWT-EventQueue-0" java.lang.NoSuchFieldError: preferIPv6Address
    at java.base/java.net.InetAddress.init(Native Method)
    at java.base/java.net.InetAddress.init(Native Method)
    at java.base/java.net.InetAddress.<clinit>(InetAddress.java:333)
    at org.apache.logging.log4j.core.util.NetUtils.getLocalHostname(NetUtils.java:53)
    at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:539)
    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:617)
    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:634)
    at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:229)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
    at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
    at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:122)
    at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:43)
    at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:46)
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383)

看起来像方法

public static InetAddress getLocalHost() throws UnknownHostException 

的实现方式与Oracle Java中的实现方式不同.

is implemented differently than in Oracle java.

/etc/hosts包含ipv6记录:

::1     ip6-localhost ip6-loopback 

推荐答案

问题是由系统上安装的JDK9引起的. Log4j 2.8尚不兼容Java 9.

The problem was caused by JDK9 installed on the system. Log4j 2.8 is not compatible with Java 9 yet.

删除JDK9或将首选项设置为JDK8应该可以解决此问题.在Debian上:

Either removing JDK9 or setting preference to JDK8 should solve the issue. On Debian:

sudo update-alternatives --config java

这篇关于OpenJDK 8:无法解析主机名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆