MonetaryException: Нет MonetaryAmountsSingletonSpi загружен - PullRequest
4 голосов
/ 27 апреля 2020

Описание проблемы

У меня есть java проект с зависимостью gradle от org.javamoney:moneta:1.3.

Также у меня есть два кластера Kubernetes. Я развертываю свое приложение java, используя docker -контейнер.

Когда я развертываю свое приложение в первом Kubernetes кластере, все в порядке. Но при развертывании моего приложения (того же контейнера docker) в кластере second Kubernetes появляется следующая ошибка:

javax.money.MonetaryException: No MonetaryAmountsSingletonSpi loaded.
    at javax.money.Monetary.lambda$getDefaultAmountFactory$13(Monetary.java:291)
    at java.base/java.util.Optional.orElseThrow(Optional.java:408)
    at javax.money.Monetary.getDefaultAmountFactory(Monetary.java:291)

Оно появляется в следующем коде:

MonetaryAmount amount = javax.money.Monetary.getDefaultAmountFactory()
    .setCurrency("USD")
    .setNumber(1L)
    .create();

Версии программного обеспечения

  • Moneta : 1.3.
  • Gradle: 6.0.1.
  • База docker -изображение: openjdk:11.0.7-jdk-slim.
  • Пружинная загрузка: 2.2.7.RELEASE.
  • Kubernetes (та же версия на обоих кластерах): Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:05:50Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}.
  • Java: java -version openjdk version "11.0.7" 2020-04-14 OpenJDK Runtime Environment 18.9 (build 11.0.7+10) OpenJDK 64-Bit Server VM 18.9 (build 11.0.7+10, mixed mode).

То, что я пытался

Объявлять gradle-зависимость по-другому

Я нашел этот вопрос , и это дало мне идею попробуйте объявить gradle-зависимость другим способом. Я пробовал:

  • implementation 'org.javamoney:moneta:1.3'
  • compile group: 'org.javamoney', name: 'moneta', version: '1.3', ext: 'pom'
  • compile 'org.javamoney:moneta:1.3'
  • runtimeOnly 'org.javamoney:moneta:1.3'

К сожалению, это не дало никаких положительных результатов.

Конфигурации загрузчика службы копирования и вставки для Moneta

Как упоминалось в в этом комментарии Я пытался скопировать службу Настройка загрузчика из Moneta в следующую директорию проекта: src/main/resources/META-INF/services.

К сожалению, это не помогло.

Инициализация пользовательской валюты без пружины

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

Вопросы

  1. Что является причиной root этой проблемы ?
  2. Как правильно решить эту проблему?
...