Я вручную добавляю требующие переходные jackson.annotations в module-info.java для jackson.databind

я есть 3 банка библиотеки Джексона

ДЖЕКСОН-ядро-2.8.10.jarДЖЕКСОН-аннотаций-2.8.0.jarДЖЕКСОН-DataBind-2.8.10.jar

Я успешно создал module-info.java для ядра и аннотаций и преобразовал их в именованный модуль с помощью jdeps.

для привязки данных я попробовал следующую команду:

jdeps --generate-module-info. --module-path% JAVA_HOME% \ jomds; jackson.core; jackson.annotations существующиеmods \ jackson-databind-2.8.10.jar

Теперь происходит следующая ошибка:

Missing dependence: .\jackson.databind\module-info.java not generated
Error: missing dependencies
   com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonCreator       not found
   com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonCreator$Mode  not found
   com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonFormat        not found
   com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonFormat$Value  not found
   com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonIgnoreProperties not found
   com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonIgnoreProperties$Value not found.

Как я могу сгенерировать module-info.java для jackson-databind?

 Naman09 дек. 2017 г., 13:20
Возможный дубликатэто-есть-а-путь к АДД-Maven-зависимостей, в то время, с использованием самой Maven-JLINK-плагин? Рассмотрение maven как основы в другом вопросе не является причиной неудачи.

Ответы на вопрос(1)

Решение Вопроса

да, вам придется конвертировать библиотеки в явные модули.

jlink Инструмент предназначен для предоставления обрезанного бинарного изображения, имеющего только необходимые модули. Проблема в том, чтоавтоматические модули иметь доступ к classpath (он же безымянный модуль), который может читать все модули JDK. Так что ничего не будет урезано.

Эта тема утверждает это также со ссылкой на видео YouTube.

Этот пример новообращенныеcommons-lang3-3.5.jar в модуль экспликации дляjlink демо.

редактировать: чтобы быть более конкретным,вот пример скрипт, который преобразует, по порядку,jackson-core, jackson-annotations, а такжеjackson-databind устаревшие банки в модульные банки.

Идея заключается в следующем:

бегатьjdeps --generate-module-info на старой банкеразархивируйте устаревшую банку в папку, добавьтеmodule-info.java сверху, заново скомпилируйте и заново заархивируйте

Хитрость заключается в том, что модульные фляги с зависимостями будут требовать этих зависимостей в качестве параметров командной строки. Например, вотjackson-databind (несколько абстрагировано):

# here, jackson-core and jackson-annotations have been built
# jackson-databind 

jdeps --module-path $ROOT_DIR/modules \
--add-modules jackson.annotations,jackson.core \
--generate-module-info work $JACKSON_DATABIND_JAR

javac --module-path $ROOT_DIR/modules \
--add-modules jackson.annotations,jackson.core \
-d $ROOT_DIR/classes module-info.java
 optional10 дек. 2017 г., 04:32
Хотя я сделал все jars moduler, но все еще jackson.databind не читает модуль jackson.annotation при создании module-info.java с использованием jdeps.
 optional10 дек. 2017 г., 04:41
Я вручную добавляю требующие переходные jackson.annotations в module-info.java для jackson.databind
 optional09 дек. 2017 г., 16:26
Я обновил свой вопрос.
 Michael Easter09 дек. 2017 г., 18:27
Я обновил ответ ссылкой на решение GitHub, которое конвертирует все три банки.

Ваш ответ на вопрос