Модули java 9, NoClassDefFoundError: java.sql.Date

Я пробовал запустить наш проект Gradle Java 8 с Java 9, так как мы хотим перейти на него. Однако при выполнении модульного теста я получаю

java.lang.ClassNotFoundException: java.sql.Date исключение

брошенный com.fasterxml.jackson.databind.deser.std.DateDeserializers

В коде это выглядит так:

static {
    Class<?>[] numberTypes = new Class<?>[] {
        ...
        java.sql.Date.class,
        ...
    };
    ...
}

Я поискал в Интернете, и, очевидно, если вы не хотите создавать файл module-info.java для каждого модуля, вам нужно добавить параметр --add-modules java.sql.

Я использую intellij и добавил параметр к аргументам javac в File>Settings>Build,Execution,Deployment>Compiler>Java Compiler, а также в параметре run config as VM, но все равно получаю исключение.

Есть ли более простой способ сделать это или что я делаю не так? Спасибо

редактировать: Версия IntelliJ:

IntelliJ IDEA 2018.1.5 (Community Edition)
Build #IC-181.5281.24, built on June 12, 2018
JRE: 1.8.0_152-release-1136-b39 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0

Какая у вас версия intelliJ, и можете ли вы показать нам свои полные конфигурации выполнения из intelliJ?

Naman 16.07.2018 17:04

Если вы не создадите module-info.java, все модули Java SE, в том числе java.sql, будут доступны во время выполнения, поэтому вам не понадобится --add-modules. Что-то еще должно быть не так.

Nicolai Parlog 16.07.2018 19:19

Можете ли вы вставить часть трассировки стека, чтобы помочь диагностировать это? Одна из возможных причин заключается в том, что на картинке есть пользовательский загрузчик классов, который делегирует загрузчику (модуль java.sql сопоставлен с загрузчиком классов платформы). Другая причина в том, что вы перешли на модули и пропустили requires java.sql (но это не объясняет, как был скомпилирован код).

Alan Bateman 17.07.2018 14:43

Если вы создали module-info.java, в дальнейшем просто добавьте «требует java.sql;»

barbazoo 29.09.2019 18:33
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
4 421
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема исчезла сама собой после того, как я удалил jdk9 и снова добавил его.

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