созданное исключение; вложенным исключением является java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory

#java #spring #apache-spark #kotlin #google-cloud-storage

# #java #spring #apache-spark #котлин #google-облачное хранилище

Вопрос:

Сталкиваюсь с этим исключением каждый раз, когда запускаю свое приложение с установленными GoogleCloudStorage и Spark:

Конструктор вызвал исключение; вложенным исключением является java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory

Облачное хранилище Google

 <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-storage</artifactId>
        <version>1.17.0</version>
 

Apache Spark

 <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>2.4.0</version>
        </dependency>
 

(Если я удалю любой из них, приложение будет работать нормально)

Я пробовал:

  • установка разных версий обоих
  • Исключение Джексона из com.fasterxml.jackson.core и установка зависимостей по отдельности

Что еще это может быть?

Ответ №1:

org.codehaus.jackson.JsonFactory из старой версии Jackson. Джексон использует com.fasterxml сейчас. Таким образом, у вас есть некоторая зависимость в зависимости от более старой версии, но в то же время вы добавляете более новую версию. Вам придется либо 1) использовать более старую версию, которую требуют некоторые из ваших зависимостей, 2) обновить ваши зависимости до более новой версии, которая использует более новый jackson (если возможно), либо 3) (дополнительно) изолировать ваши зависимости с помощью некоторых средств (загружая их в отдельные загрузчики классов / модули Java 9, дляэкземпляр).

mvn dependency:tree даст вам больше информации, чтобы вы могли узнать, каковы проблемные зависимости.