问题标签 [java-money]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
278 浏览

java - 为什么 JavaMoney 依赖项是 POM 包?

我对构建系统不是很有经验,但这让我很好奇。

大多数库使用<type>jar</type>(默认)作为它们的依赖项,但 JavaMoney 库pom改为使用,原因是什么?

0 投票
1 回答
148 浏览

precision - 从双重创建 FastMoney/Money 是否有任何警告?

已经看到BigDecimal从创建时存在问题double

虽然FastMoney不使用BigDecimal(而不是Money),但我不确定当我从一个double值创建它们时它们中的任何一个会如何表现。

是否从不推荐创建FastMoney/Money实例?double我应该总是尝试从创建它们String吗?

0 投票
1 回答
492 浏览

java-money - JSR354 (Java Money API) 保留为 javax.money 还是迁移到 java.money?

既然已经进行了转移投票并且 jsr354-api (Java Money API) 已设置为包含在 Java 发行版中,那么它的包会保留为 javax.money 还是转移到 java.money?

module-info.java文件的目的是允许将 java.money 用作别名吗? https://github.com/JavaMoney/jsr354-api/blob/master/src/main/java/java/money/module-info.java

0 投票
1 回答
138 浏览

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

我正在使用 Moneta JavaMoney 1.3 来获取汇率:

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

我还尝试指定 ExchangeRateProvider:ExchangeRateProvider xrates = MonetaryConversions.getExchangeRateProvider("ECB");在 Eclipse 中一切正常,从命令行它抛出一个 MonetoryException 说“无效的 ExchangeRateProvider(未找到):ECB”

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

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

还是我也应该使用 moneta-bp?会很奇怪,因为 moneta-bp 是作为 Java 7 的反向端口构建的,而我正在使用 Java 8。还有其他想法吗?

提前致谢!

编辑:

从 Eclipse 运行 ExchangeRateProvider 是org.javamoney.moneta.spi.CompoundRateProvider. 从命令行它是org.javamoney.moneta.convert.internal.IdentityRateProvider. 查看 IdentityRateProvider 的代码,它返回 null 是有道理的。但是如何获得 CompoundRateProvider?

0 投票
1 回答
502 浏览

java - 将 MonetaryAmount 转换为长期的次要单位 (Javamoney)

使用 JSR-354 Java Money API(在本例中为 Moneta),我可以轻松地从 a次要单位(在本例中为便士)创建一个MonetaryAmount对象:long

...但是我如何以同样的方式查询它的MonetaryAmount 次要单位呢?我可以:

...但这仅给出主要单位,完全截断次要单位。

0 投票
1 回答
631 浏览

java - 由于 InvalidDefinitionException,javamoney 的 CurrencyUnit 不能用作字段类并被 Jackson 反序列化

我有一个 pojo,它有一个CurrencyUnit来自 javamoney 库的类型字段。当我编组这个 pojo Jackson 时抛出异常。当我没有定义任何默认构造函数时,我记得这个异常。但在这种情况下,我无法维护CurrencyUnit该类,因为它来自依赖项。我怎样才能使这项工作?

例外:

0 投票
1 回答
68 浏览

java - 使用 javamoney 1.3 库的 Amort 表

我想使用 javamoney 制作贷款摊销表。我想过使用 PresentValueOfAnnuityPayment,但无法在 javamoney 1.3 中找到它。有什么建议么?

编辑:我在项目中添加了这个依赖项,但仍然无法从这个https://github.com/JavaMoney/javamoney-lib/blob/master/calc/src/main/java/org/javamoney找到 PresentValueOfAnnuityPayment 或任何其他类/calc/common/PresentValueOfAnnuityPayment.java 存储

0 投票
1 回答
76 浏览

java - java MonetaryConversions 为高位数货币抛出 ArithmeticException

我想使用标准的 java MonetaryConversions 来转换货币。

乍一看,它工作得很好而且很简单:

但是,当我使用日元或墨西哥比索等名义价值较高的货币时,我发现会引发 ArithmeticExceptions

引发以下异常

检查 FastMoney 的代码,我发现异常是硬编码的,我找不到任何可以减少的地方,例如规模。

但是有了这个开箱即用的java提供的转换是非常无用的,因为我不能转换很多货币。我无法想象没有人有这个问题。但是我用谷歌找不到任何东西。

0 投票
2 回答
695 浏览

java - MonetaryException:未加载 MonetaryAmountsSingletonSpi

问题描述

我有一个带有 gradle 依赖关系的 java 项目org.javamoney:moneta:1.3

我还有两个 Kubernetes 集群。我使用 docker-container 部署我的 java 应用程序。

当我在第一个Kubernetes 集群中部署我的应用程序时,一切都很好。但是当我在第二个Kubernetes 集群中部署我的应用程序(相同的 docker-container)时,会出现以下错误:

它出现在以下代码中:

软件版本

  • 莫内塔1.3
  • 摇篮:6.0.1
  • 基础泊坞窗图像: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 -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-dependency

我发现了这个问题,它给了我一个想法,尝试以某种不同的方式声明 gradle-dependency。我努力了:

  • 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.

不幸的是,它没有帮助。

无弹簧初始化自定义货币

我试图只在 Main-class 中这样做,但它并没有解决问题。

问题

  1. 这个问题的根本原因是什么?
  2. 这个问题的正确解决方案是什么?
0 投票
1 回答
437 浏览

java - com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造实例

我正在创建 Spring Web 应用程序并尝试使用 Money 数据(javamoney.moneta)添加新实体。这是代码:

添加到表中的货币列和数据将用 FastMoney 填充。FastMoney 正在从 BigDecimal money 和 String currencyUnit 的构造函数内部创建。

当我尝试使用带有 json body 的 API 端点保存时,我遇到了这个问题:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
无法构造 org.javamoney.moneta.FastMoney 的实例(没有创建者,如默认构造函数,存在):没有从数字值反序列化的 int/Int-argument 构造函数/工厂方法( 32)

我应该怎么办?