java.util.Currency和ISO 4217标准

java.util.Currency和ISO 4217标准,java,currency,Java,Currency,根据我前面的问题,我正在查看 我看到了以下代码片段: static { AccessController.doPrivileged(new PrivilegedAction() { public Object run() { String homeDir = System.getProperty("java.home"); try { String dataFile = homeDir + File.separator + "l

根据我前面的问题,我正在查看

我看到了以下代码片段:

static {
  AccessController.doPrivileged(new PrivilegedAction() {
    public Object run() {
      String homeDir = System.getProperty("java.home");
      try {
        String dataFile = homeDir + File.separator +
        "lib" + File.separator + "currency.data";
        DataInputStream dis = new DataInputStream(
        new BufferedInputStream(
        new FileInputStream(dataFile)));
        if (dis.readInt() != MAGIC_NUMBER) {
          throw new InternalError("Currency data is possibly corrupted");
        }
        ....
        ....
        ....
        ....
        if (false) {
          // look for the properties file for overrides
          try {
            File propFile = new File(homeDir + File.separator +
            "lib" + File.separator +
            "currency.properties");
            //more code 

          }
我想知道currency.data或currency.properties的位置,因为我在C:\Program files\Java\jre6\lib中找不到任何这样的文件

在rt.jar下,我可以看到一个类CurrencyData,它定义了一些条目,但不确定它与java.util.Currency的关系

我正在查看公共静态货币getInstanceString currencyCode{},以查看它如何检查给定的货币代码是否在ISO4217列表下。CurrencyData.properties看起来像用于存储和传递此信息的文件

希望能得到更多的信息。目前我正在使用以下Java版本:

java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) 64-Bit Server VM (build 17.0-b17, mixed mode)

您链接到的源代码是OpenJDK 6,但是您使用的是Oracle Java 6。Oracle Java 6的源代码没有引用这些货币文件,因此它们不会出现在您的安装中

请记住,OpenJDK是从Oracle Java 7分支出来的,Oracle Java 7引用了Currency类中的那些文件。OpenJDK 6是通过剥离OpenJDK 7中的代码创建的,直到它与Java 6规范匹配为止,请参阅。显然,这段特定的代码在后台端口中幸存了下来

我怀疑如果您安装OpenJDK 6,您会找到这些文件。类似地,我的Oracle Java 7安装也有这些文件


请注意,Oracle Java 6似乎将货币数据存储在一个包私有的Java.util.CurrencyData类中。

我查看了我的JDK rt.jar,但在那里没有找到这样的属性。我想知道Oracle根据ISO@UmeshAwasthi见上面我编辑的答案的最后一段。我建议您购买Oracle6源代码并查看一下。我已经创建了一个增强的ISO4217枚举和其他ISO枚举。代码可在那里获得:免费