Java ';Calendar.getDisplayName';给予';非法辩论例外';与';未知来源';

Java ';Calendar.getDisplayName';给予';非法辩论例外';与';未知来源';,java,calendar,illegalargumentexception,Java,Calendar,Illegalargumentexception,问题-我的应用程序在数百台计算机的生产环境中使用。在安装了一些新计算机后,发现我的应用程序只在新计算机上崩溃,问题就出现了。新的计算机附带了JavaV8U5,为了解决这个问题,我还安装了v7u55(我认为这可能是版本控制问题)。 注意*我正在使用JDKV7U45进行编译** 根本原因-失败的代码是对 失败的代码: System.out.println("Getting calendar instance"); Calendar instanceCalendarOb

问题-我的应用程序在数百台计算机的生产环境中使用。在安装了一些新计算机后,发现我的应用程序只在新计算机上崩溃,问题就出现了。新的计算机附带了JavaV8U5,为了解决这个问题,我还安装了v7u55(我认为这可能是版本控制问题)。 注意*我正在使用JDKV7U45进行编译**

根本原因-失败的代码是对

失败的代码:

        System.out.println("Getting calendar instance");
        Calendar instanceCalendarObj = Calendar.getInstance();
        String date = instanceCalendarObj.getDisplayName(Calendar.MONTH, 0, Locale.ENGLISH);
        date = date.concat(" "+String.valueOf(instanceCalendarObj.get(Calendar.DAY_OF_MONTH)));
        date = date.concat(", "+String.valueOf(instanceCalendarObj.get(Calendar.YEAR)));
        JOptionPane.showMessageDialog(this, date);
错误消息:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException
    at java.util.Calendar.checkDisplayNameParams(Unknown Source)
    at java.util.Calendar.getDisplayName(Unknown Source)

任何帮助都将不胜感激,即使这只是一种解决方法。

您将错误的参数传递给
getDisplayName()
方法

第二个参数是样式,其可能值为
Calendar.SHORT
Calendar.LONG
。使用这些常量,如下所示:

Calendar c = Calendar.getInstance();
c.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.ENGLISH);
c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH);

顺便说一句,
Calendar.SHORT
Calendar.LONG
的常量值分别为1和2(您在代码中传递了0)。但始终使用常量名称,而不是它们的值

我对你感激不尽;我终于可以把这个键盘从我面前拿出来了