Как добавить maven-зависимости json в модули в>= Java 9
В 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 это больше не разрешено?
Как это исправить?
РЕДАКТИРОВАТЬ:
Я обновил зависимость maven до 1.1.4 и поместил их в путь к классам. javax.json-api
имеет файл module-info.java и работает нормально, eclipse не показывает больше ошибок.
Но теперь пакеты реализации javax.json (org.glassfish)
не найдены, в результате чего ClassNotFoundException: org.glassfish.json.JsonProviderImpl
Что еще я могу сделать?
РЕДАКТИРОВАТЬ:
Это работает сейчас, я забыл сгенерировать module-info.java в этом проекте.
1 ответ
Таким образом, в обоих проектах зависимостей есть пакет с именем javax.json.stream, и из-за системы модулей Jigsaw это больше не разрешено?
Это все еще разрешено, но обе эти зависимости разрешаются на пути к классам, а не на пути к модулям, т.е. в безымянном модуле.
Еще одна альтернатива, чтобы исправить это, пока вы создаете свою библиотеку как модульную, состоит в том, чтобы убедиться, что вы исправили нижестоящие библиотеки, экспортирующие тот же пакет, что потребовало бы восходящей миграции, и вам, возможно, придется подождать, пока они исправят это в своем последнем обновлении (или проверить, если один уже отсутствует), а затем положиться на них.