简体   繁体   English

Moneta 1.3 ExchangeRateProvider.getExchangeRate(base,term)返回null

[英]Moneta 1.3 ExchangeRateProvider.getExchangeRate(base, term) returns null

I'm using Moneta JavaMoney 1.3 to obtain an exchange rate: 我正在使用Moneta JavaMoney 1.3获取汇率:

CurrencyUnit base = Monetary.getCurrency(...);
CurrencyUnit term = Monetary.getCurrency(...);
ExchangeRateProvider xrates = MonetaryConversions.getExchangeRateProvider();
ExchangeRate xrate = xrates.getExchangeRate(base, term);

If I run the code within Eclipse it works fine. 如果我在Eclipse中运行代码它工作正常。 But after building a jar with Maven and running the jar from the command line, ExchangeRateProvider.getExchangeRate(base, term) returns null. 但是在使用Maven构建jar并从命令行运行jar后, ExchangeRateProvider.getExchangeRate(base, term)返回null。

I also tried specifying the ExchangeRateProvider: ExchangeRateProvider xrates = MonetaryConversions.getExchangeRateProvider("ECB"); 我还尝试指定ExchangeRateProvider: ExchangeRateProvider xrates = MonetaryConversions.getExchangeRateProvider("ECB"); Within Eclipse all ok, from the command line it throws an MonetoryException saying "Invalid ExchangeRateProvider (not found): ECB" 在Eclipse中一切正常,从命令行抛出一个MonetoryException,说“无效的ExchangeRateProvider(未找到):ECB”

This question mentions the same issue: "Because if i'm using dependency on money-api without bp I get null as an result." 这个问题提到了同样的问题:“因为如果我在没有bp的情况下使用对money-api的依赖,那么我就会得到null。” I tried the accepted answer: 我尝试了接受的答案:

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);

Again no luck: works within Eclipse, but returns null from the command line. 再次没有运气:在Eclipse中工作,但从命令行返回null。 Does this have something to do with dependencies when building the jar? 在构建jar时,这是否与依赖关系有关? I'm using the Maven shade plugin with minimizing turned off. 我正在使用Maven阴影插件,最小化关闭。

Or should I use moneta-bp too? 或者我也应该使用moneta-bp吗? Would be strange, since moneta-bp is built as backport for Java 7, and I'm using Java 8. Any other ideas? 会很奇怪,因为moneta-bp是作为Java 7的后端构建的,我使用的是Java 8.还有其他想法吗?

Thanks in advance! 提前致谢!

EDIT: 编辑:

Running from Eclipse the ExchangeRateProvider is an instance of org.javamoney.moneta.spi.CompoundRateProvider . 从Eclipse运行,ExchangeRateProvider是org.javamoney.moneta.spi.CompoundRateProvider一个实例。 From the command line it's an instance of org.javamoney.moneta.convert.internal.IdentityRateProvider . 从命令行,它是org.javamoney.moneta.convert.internal.IdentityRateProvider的一个实例。 Looking at IdentityRateProvider's code, it makes sense that it returns null. 查看IdentityRateProvider的代码,它返回null是有道理的。 But how to get the CompoundRateProvider? 但是如何获得CompoundRateProvider?

我没有使用Maven shade插件,而是尝试了这个解决方案 ,现在它似乎正常工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM