java - 为什么 java.util.Currency.getDisplayName() 返回 null

标签 java tomcat

我有一个使用此类的应用程序:java.util.Currency

在应用程序中,我维护了一个国家代码到语言环境的映射。我通过传入国家/地区代码来检索语言环境

当我将此语言环境传递给 Currency.getInstance() 时,它会返回正确的货币。我通过调用 Currency.getCurrencyCode()

验证了这一点

但是,当我在同一货币实例上调用 getDisplayName() 时,它返回 null

这种行为不会发生在我的开发机器上,只会发生在我的测试服务器上

我的开发机器和服务器都使用 Ubuntu 12.04 LTS:

java version "1.6.0_27"
OpenJDK Runtime Environment (IcedTea6 1.12.6) (6b27-1.12.6-1ubuntu0.12.04.2)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

应用程序在tomcat中运行

我可能在这里遗漏了一些东西

编辑

import java.util.Currency;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

...

public static Map<String, Locale> COUNTRY_TO_LOCALE_MAP;

public static void initCountryToLocaleMap() {
    if (COUNTRY_TO_LOCALE_MAP != null) {
        return;
    }

    COUNTRY_TO_LOCALE_MAP = new HashMap<String, Locale>();

    Locale[] locales = Locale.getAvailableLocales();

    for (Locale l : locales) {
        COUNTRY_TO_LOCALE_MAP.put(l.getCountry(), l);
    }
}

public static Locale getLocaleFromCountryCode(String countryCode) {
    if (countryCode == null) {
        return null;
    }

    initCountryToLocaleMap();

    Locale locale = COUNTRY_TO_LOCALE_MAP.get(countryCode);

    if (locale == null) {
        return new Locale("", countryCode);
    }

    return locale;
}

public static void main(String args[]) {
    initCountryToLocaleMap();

    String countryCode = "ZA";
    Locale locale = getLocaleFromCountryCode(countryCode);
    Currency currency = Currency.getInstance(locale);

    System.out.println("currencyCode: " + currency.getCurrencyCode());
    System.out.println("displayName: " + currency.getDisplayName());
}

运行 main() 后,我得到以下输出: 来自开发机器:

currencyCode: ZAR
displayName: South African Rand

来自测试服务器:

currencyCode: ZAR

最佳答案

javadoc对于 Currency 类,表示方法 getDisplayName() 是 Java 1.7 版中的新方法。尝试使用 1.7 版 JDK 运行 Tomcat。

如果 Tomcat 只是默默地失败并返回 null,我会感到惊讶。您是否检查了 Tomcat 日志以查看是否有任何异常?

关于java - 为什么 java.util.Currency.getDisplayName() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18700673/

相关文章:

Java 对象到 JSON

java - 实例化 servlet 类时出错 [org.ran.FristServlet]

spring - LifecycleBase.handleSubClassException 空指针异常导致Tomcat启动

java - 用于将文件上传到 ContentDocument 对象的 JSON 语法和代码

java - 为什么当我调用 toString() 时 String 接收器的大小小于原始 ByteArrayOutputStream 的大小

java - 运行 Java Web 应用程序时出现 SQLException

java - 如何修复/避免 java.io.IOException : Socket read failed?

java - 在 Tomcat 服务器上使用 Gradle 构建部署 Spring 应用程序

java - 将字符转换为 UTF-8

java - 为什么我必须使用 "this"关键字进行前向引用?