Я бы хотел использовать возможности json-io 4.10.1.К сожалению, моя версия hadoop (2.8.4) включает версию 2.5.1.Когда мое приложение запускается, оно извлекает json-io из / usr / lib / hadoop-yarn-lib вместо классов, входящих в мое приложение .jar.
Эта более новая версия, например, не имеетметод JsonReader.jsonToJava со вторым аргументом, который принимает параметры, и эта версия лучше справляется с отображением моих объектов в / из json.
При выполнении приложения я получаю сообщение об ошибке, что соответствующий метод не может бытьнайденный.В конечном счете, в качестве временного промежутка я удалил файл /usr/lib/hadoop-yarn-lib/json-io-2.5.1.jar, и приложение нашло «локальную» версию и успешно запустилось.
Итак, вмой pom.xml, я объявляю json-io зависимостью:
<dependency>
<groupId>com.cedarsoftware</groupId>
<artifactId>json-io</artifactId>
<version>4.10.1</version>
</dependency>
И я настроил плагин shade для создания толстого .jar.Полученный jar-файл содержит JsonReader.class из правильной версии json-io.
Этот старый jar-файл находится непосредственно в пути к классам hadoop (/usr/lib/hadoop-yarn-lib/*).
Я ожидаю, что загрузчик классов найдет связанный JsonReader.class, но он извлекает его из пути к классам.