Как добавить maven-зависимости json в модули в> = Java 9 - PullRequest
0 голосов
/ 14 января 2019

в java 8 проектах вы просто добавляете следующие зависимости в maven

<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <version>1.1</version>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.1</version>
</dependency>

Использование OpenJDK, Eclipse 2018-12
и модуль maven, это приводит к получению ошибки в module-info.java:

Пакет javax.json.stream доступен из нескольких модулей: java.json, org.glassfish.java.json

Итак, в обоих проектах зависимостей есть пакет с именем javax.json.stream, и из-за системы модулей Jigsaw это больше не разрешено?

Как это исправить?

EDIT:
Я обновил зависимость maven до 1.1.4 и поместил их в путь к классам. javax.json-api имеет файл module-info.java и работает нормально, затмение больше не показывает ошибок.
Но теперь пакеты реализации javax.json (org.glassfish) не найдены, в результате чего ClassNotFoundException: org.glassfish.json.JsonProviderImpl

Что еще я могу сделать?

EDIT:
Теперь он работает, я забыл сгенерировать module-info.java в этом проекте.

1 Ответ

0 голосов
/ 14 января 2019

Итак, в обоих зависимых проектах есть пакет, который называется javax.json.stream и из-за системы модулей головоломки это не допускается больше?

Это все еще разрешено, , но , причем обе эти зависимости разрешаются на classpath вместо modulepath , то есть в неназванном модуле .

Еще одна альтернатива, чтобы исправить это, пока вы создаете библиотеку как модульную, - это исправлять нижестоящие библиотеки, экспортирующие тот же пакет, что потребовало бы восходящей миграции, и вам, возможно, придется подождать, пока они исправят ее в последней версии. обновить (или проверить, если он уже отсутствует), а затем положиться на них.

...