У меня есть микросервис на основе модульного джерси, работающий на JDK 11. Он прекрасно развертывается в Google App Engine. Код можно скачать здесь (или клонировать основной проект и переключиться на тег 3.1):
https://github.com/Leejjon/SimpleJerseyService/releases/tag/3.1
Теперь я хочу добавить доступ к Google Cloud Datastore API (который работал в моем предыдущем немодульном проекте Java 8). Поэтому я добавляю зависимость maven:
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-datastore</artifactId>
<version>1.80.0</version>
</dependency>
И я добавляю requires google.cloud.datastore;
в мой модуль-info.java.
A mvn clean install
работает нормально, но когда я запускаю его через mvn exec:exec
или java -p simple-service-1.0-SNAPSHOT.jar;appengine-staging/ -m myModule/com.example.Main localhost
Я получаю:
Error occurred during initialization of boot layer
java.lang.module.ResolutionException: Modules grpc.context and grpc.api export package io.grpc to module org.apache.httpcomponents.httpclient
Могу ли я что-нибудь сделать в моем module-info.java для решения этой проблемы?
После прочтения сообщений, таких как:
https://blog.codefx.org/java/java-9-migration-guide/#Split-Packages
https://blog.codefx.org/java/jsr-305-java-9/#Modular-Project
Модули A и B экспортируют пакет some.package в модуль C в Java 9
Я подозреваю, что эта библиотека google-cloud-datastore просто не готова к модульной системе Java. Я опубликую проблему в github API Облачного клиента Google, ссылаясь на эту публикацию stackoverflow.