2014-05-09 3 views
1

문제 - 내 응용 프로그램은 수백 대의 컴퓨터에서 프로덕션 환경에서 사용됩니다. 이 문제는 일부 새 컴퓨터를 설치 한 후 내 컴퓨터가 새 컴퓨터에만 충돌하고 있음을 확인한 후에 발생했습니다. 새로운 컴퓨터는 JAVA v8u5와 함께 v7u55를 설치 한 이슈를 수정하려는 시도에서 왔습니다 (버전 관리 문제 일 수 있다고 생각했습니다). 참고 * 나는 JDK의 v7u45 **를 사용하여 컴파일하고 있습니다'Calendar.getDisplayName'이 '알 수없는 소스'로 'IllegalArgumentException'을 제공합니다.

루트 원인 - 실패한 코드가 작동하지 않는 Calendar.getDisplayName(int, int, Locale)

코드를 호출입니다 :

 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) 

아무런 도움이 필요하지 않을 수도 있습니다.

+0

[null 매개 변수에 대해 IllegalArgumentException 또는 NullPointerException이 중복 될 수 있습니까?] (http://stackoverflow.com/questions/3881/illegalargumentexception-or-nullpointerexception-for-a-null-parameter) – Mogsdad

답변

2

getDisplayName() 메서드에 잘못된 매개 변수를 전달했습니다.

두 번째 매개 변수는 가능한 값이 Calendar.SHORTCalendar.LONG 인 스타일입니다. 아래와 같이 이러한 상수를 사용

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

, BTW Calendar.SHORTCalendar.LONG에 대한 상수 값은 1과 2이다 (그리고 코드에서 0을 통과). 그러나 항상 그 값이 아닌 상수 이름을 사용하십시오!

+0

감사합니다. 충분히; 마침내 내 얼굴에서이 키보드를 꺼낼 수 있습니다 .-P –