[英]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.