Наконец-то я обнаружил проблему: дело в том, что я использовал свойства вроде этого:
Properties properties = new Properties();
properties.put("hazelcast.logging.type", "slf4j");
properties.put("hazelcast.jmx", true);
...
Так что true
было установлено как логическое значение.Внутренне Hazelcast в своем исходном коде получал ноль здесь в файле GroupProperties.java
на 752-й строке:
String configValue = (config != null) ? config.getProperty(name) : null;
Если вы покопаетесь глубже, вы увидите, что config.getProperty(name)
вернет ноль из-за этой причудливой вещи на969-я строка файла Properties.java
(как в JDK 1.8.0_102):
Object oval = super.get(key);
String sval = (oval instanceof String) ? (String)oval : null;
oval
в этом случае соответствует ключу "hazelcast.jmx", таким образом, является true
, но как BOOLEAN не Строка как требуется.
Исправление простое:
Properties properties = new Properties();
properties.put("hazelcast.logging.type", "slf4j");
properties.put("hazelcast.jmx", "true");
...
Просто сделайте все не строковые значения строковыми.
Надеюсь, это кому-нибудь поможет!