2011-07-18 5 views
4

JAXB 2를 사용하여 XSD 스키마에 대해 XML 파일을 구문 분석하고 Java 태그에 대한 ant 빌드 중에 XML 태그가 자동으로 언 마샬링됩니다. 일부 enums이 생성됩니다. 코드는 다음과 같습니다 루프에서java.lang.IllegalArgumentException : enum const 클래스가 없습니다

BinQuality bq = BinQuality.valueOf(him.getToBinQuality()); 

나는 단지 91 반복에서 예외를 얻을 : 내 코드에서

@XmlType(name = "binQuality") 
@XmlEnum 
public enum BinQuality { 

    GOOD, 
    BAD, 
    UGLY, 
    NULL; 

    public String value() { 
     return name(); 
    } 

    public static BinQuality fromValue(String v) { 
     return valueOf(v); 
    } 
} 

나는 호출합니다.

** * ** * * 업데이트] * ** * ** *

him.getToBinQuality() 유효한 열거 (BAD 좋은 /를 반환 않습니다/UGLY/NULL). 아래는 로그의 발췌 부분입니다.

.... 
2011-07-18 15:28:09 DEBUG (com.st.mas.wmr.persistence.process.ProcessStifOliBinConversionCompleteImpl:183) -> class com.st.mas.wmr.persistence.process.ProcessStifOliBinConversionCompleteImpl|exportToXml|him.getToBin():89|him.getToBinQuality():BAD 
2011-07-18 15:28:09 DEBUG (com.st.mas.wmr.persistence.process.ProcessStifOliBinConversionCompleteImpl:183) -> class com.st.mas.wmr.persistence.process.ProcessStifOliBinConversionCompleteImpl|exportToXml|him.getToBin():90|him.getToBinQuality():UGLY 
2011-07-18 15:28:09 DEBUG (com.st.mas.wmr.persistence.process.ProcessStifOliBinConversionCompleteImpl:183) -> class com.st.mas.wmr.persistence.process.ProcessStifOliBinConversionCompleteImpl|exportToXml|him.getToBin():91|him.getToBinQuality():BAD 
2011-07-18 15:28:09 WARN (org.apache.struts.action.RequestProcessor:538) -> Unhandled Exception thrown: class java.lang.IllegalArgumentException 

정말 신비스러워 보입니다.

Java 버전은 1.5입니다.

감사합니다.

+1

그리고 91 번째 반복에서 'him'의 가치는 무엇입니까? –

+0

발견. 91 번째 데이터에는 후행 공백이 있습니다. :) –

답변

7

이것은 91 번째 항목에 대한 enum 값을 찾을 수 없기 때문입니다. 실패한 String의 값은 무엇입니까?

+4

발견. 91 번째 데이터에는 후행 공백이 있습니다. :) –

1

대부분의 아마 그 him.getToBinQuality()이 경우에 유효한 문자열을 반환하지 않기 때문에 문자열 쉽게 로그에 값을 인쇄하여이 문제를 디버깅 할 수 있습니다 'GOOD|BAD|UGLY|NULL'

해야합니다.

2

MyEnum.valueOf(null)을 통해 열거 형 요소를 평가하려고하면 XML에 유효한 ENUM 값 (소문자 '좋음'과 같은)이 없거나 태그가 비어 있습니다. IllegalArgumentException이 throw됩니다.

+3

값이'null'이면'valueof'는'NullPointerException'을 던집니다. – Srinivas

관련 문제