У меня возникли проблемы с созданием проекта Maven Eclipse для сборки как в Maven, так и в Eclipse. Проблема, по-видимому, заключается в том, что библиотека проверки JSON com.networknt хочет быть обязательной (в модуле-info.java), как требует com.networknt.schema в Maven, но как требует json.schema.validator в Eclipse (как проект Maven) . Каждая сборка просто не сможет увидеть модуль, если он назван по-другому. Я могу выполнять сборку в Eclipse, если «запускаю как сборку maven...», но это не помогает кодированию, отладке тестов JUnit и т. д.
У меня в поме есть следующее:
<dependency>
<groupId>com.networknt</groupId>
<artifactId>json-schema-validator</artifactId>
<version>1.4.3</version>
</dependency>
Я использую 1.4.3 из https://mvnrepository.com/artifact/com.networknt/json-schema-validator
Кто-нибудь знает, что здесь?
Eclipse не может это поддерживать (и не должен), потому что module-info.class должен находиться в корне файла jar... Также я бы проверил самую последнюю версию: Central.sonatype.com/artifact/com .networknt/… версия 1.5.0, это проблема jar json-schema-validator... или проекта, стоящего за ней... Создал проблему для проекта: github.com/networknt/json-schema-validator /issues/1089
@howlger - это именно то! Обходной путь тоже сработал - спасибо! Можете ли вы создать свой ответ как ответ, чтобы я мог его принять, пожалуйста :)
PS Понятия не имею, почему кто-то проголосовал против меня из-за проблемы в Eclipse, но неважно.
@khmarbaise Насколько я понимаю, JEP 238 позволяет дескриптору модуля module-info.class располагаться только в META-INF/versions/9, а не в корне: «Модулю с несколькими выпусками не обязательно иметь дескриптор модуля в расположенном корне. В этом отношении модуль Дескриптор не будет обрабатываться так же, как любой другой класс или файл ресурсов. Это может гарантировать, что, например, в корневой области будут присутствовать только классы с версиями Java 8, в то время как классы с версиями Java 9 (включая дескриптор модуля) будут присутствовать в версии 9. область."




json-schema-validator-1.4.3.jar представляет собой многовыпускной JAR-файл, в котором module-info.class не включен в корень JAR, а является META-INF/versions/9/module-info.class. Файл module-info.class скомпилирован с помощью Java 9, а остальные — с Java 8. Таким образом, его можно использовать с Java 8, а также как модульный JAR с Java 9 и выше.
Кажется, Eclipse пока не поддерживает это: Основная проблема Eclipse JDT № 2495: JAR с несколькими выпусками не распознается как таковой
В качестве обходного пути выполните одно из следующих действий:
json-schema-validator-1.4.3.jar скопируйте module-info.class из META-INF/versions/9/ в кореньMETA-INF/MANIFEST.MF добавьте строку Automatic-Module-Name: com.networknt.schema
com.networknt:json-schema-validator:1.4.3— это многовыпускной JAR , в которомmodule-info.classне включен в корень JAR, а являетсяMETA-INF/versions/9/module-info.class.module-info.classскомпилирован как байт-код Java 9, остальные — как байт-код Java 8. Eclipse, похоже, не поддерживает это. Подробности и обходной путь смотрите в моем комментарии здесь.