UnknownHostException при включении JMX в Java 8

Используя Java 7, я могу без проблем запустить JVM с включенным JMX, используя следующие свойства:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=8787

Если я использую Java 8 (сборка Java 1.8.0_45-b14; виртуальная машина 64-битного сервера Java HotSpot(TM), сборка 25.45-b02, смешанный режим), я всегда получаю ошибку, подобную этой:

java.net.MalformedURLException: имя локального хоста неизвестно: java.net.UnknownHostException: 185-69-214-74.ded.intelignet.com.br: 185-69-214-74.ded.intelignet.com.br: неизвестно ошибка

Ошибка также происходит, если я добавляю это системное свойство:

-Djava.rmi.server.hostname=185.69.214.74

Тем не менее, я могу успешно запустить Java 8, если я не включаю JMX.

Почему я не вижу ту же проблему в Java 7? Что является причиной этого и что я должен сделать, чтобы избежать этой ошибки даже с включенным JMX?

Больше деталей:

$ hostname

mybox

$ hostname -i

185.69.214.74

$ host $(hostname -i)

74.214.69.185.in-addr.arpa domain name pointer 185-69-214-74.ded.intelignet.com.br.

Возможный обходной путь - отредактировать / etc / hosts для добавления этой строки:

185.69.214.74   185-69-214-74.ded.intelignet.com.br

Однако мне не разрешено это делать, поэтому я должен найти другой способ решения этой проблемы.

1 ответ

Решение

После отладки класса java.net.InetAddressметод getLocalHostВидела звонки Inet4AddressImpl.getLocalHostName, который возвращает "185-69-214-74.ded.intelignet.com.br", когда я использую "-Djava.net.preferIPv4Stack=true". Если я опущу "java.net.preferIPv4Stack", то InetAddress.getLocalHost звонки Inet6AddressImpl.getLocalHostName, который возвращает "mybox" и проблема исчезает.

Другими словами, "UnknownHostException" происходит, только если оба условия выполняются:

  • -Djava.net.preferIPv4Stack = верно
  • Java версия = 8

Так что я просто опущу -Djava.net.preferIPv4Stack=true, так как я не нашел другого способа исправить это.

Другие вопросы по тегам