Moneta 1.3 交换速率提供程序.getExchangeRate返回空

我使用莫内塔爪哇货币1.3来获得汇率:


CurrencyUnit base = Monetary.getCurrency(...);

CurrencyUnit term = Monetary.getCurrency(...);

ExchangeRateProvider xrates = MonetaryConversions.getExchangeRateProvider();

ExchangeRate xrate = xrates.getExchangeRate(base, term);

如果我在 Eclipse 中运行代码,它可以正常工作。但是在使用 Maven 构建一个 jar 并从命令行运行该 jar 之后,将返回 null。ExchangeRateProvider.getExchangeRate(base, term)


我还尝试指定交换率提供程序:在Eclipse中一切正常,从命令行中,它抛出一个货币异常,说“无效的交换速率提供程序(未找到):ECB”ExchangeRateProvider xrates = MonetaryConversions.getExchangeRateProvider("ECB");


这个问题提到了同样的问题:“因为如果我在没有bp的情况下使用对money-api的依赖,我会得到空值。我尝试了接受的答案:


ConversionQuery cq = ConversionQueryBuilder.of().setBaseCurrency(Base).setTermCurrency(Term).build();

MonetaryAmount zero = FastMoney.zero(Base);

ExchangeRateProvider xrates = MonetaryConversions.getExchangeRateProvider("ECB");

CurrencyConversion cc = xrates.getCurrencyConversion(cq);

ExchangeRate xrate = cc.getExchangeRate(zero);

同样没有运气:在 Eclipse 中工作,但从命令行返回 null。这与构建 jar 时的依赖关系有关吗?我正在使用关闭最小化的Maven阴影插件。


或者我也应该使用莫内塔-bp吗?这很奇怪,因为 moneta-bp 是作为 Java 7 的向后移植而构建的,而我使用的是 Java 8。还有其他想法吗?


提前致谢!


编辑:


从日食运行交换速率提供程序是 的一个实例。从命令行来看,它是 的一个实例。查看标识速率提供程序的代码,它返回 null 是有道理的。但是如何获得化合物价格提供程序?org.javamoney.moneta.spi.CompoundRateProviderorg.javamoney.moneta.convert.internal.IdentityRateProvider


神不在的星期二
浏览 90回答 1
1回答

慕丝7291255

我没有使用Maven阴影插件,而是尝试了这个解决方案,现在似乎可以正常工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java