2011-07-18 15 views
4

JAXB 2を使用してXSDスキーマに対してXMLファイルを解析し、JavaクラスへのAntビルド中にXMLタグが自動的にアンマーシャリングされます。いくつかenumsが作成されます。コードは次のとおりです。私のコードでjava.lang.IllegalArgumentException:enum constクラスがありません

@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); 
    } 
} 

私は呼ん:ループ内

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

と私は第91回の反復で例外を取得します。

** * ** * * UPDATED * ** * ** *

him.getToBinQuality()有効な列挙型(BAD GOOD /を返しません/ 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です。

ありがとうございます。

will

+1

91番目の反復で 'him'の値は何ですか? –

+0

見つけました。 91番目のデータにはスペースが残っています。 :) –

答えて

7

これは、91番目のエントリで列挙値が見つからなかったためです。失敗した文字列の値は何ですか?そのhim.getToBinQuality()が、この場合、文字列は、あなたが簡単にログに値を印刷して、これを'GOOD|BAD|UGLY|NULL'

デバッグすることができますする必要がありますされた有効な文字列を返さないので

+4

それを見つけました。 91番目のデータにはスペースが残っています。 :) –

1

おそらくこれがあります。

2

MyEnum.valueOf(null)で列挙型要素を評価しようとすると、IllegalArgumentExceptionがスローされるため、XMLに有効なENUM値(小文字の「良い」など)がないか、空のタグがあります。

+3

値が 'null'の場合、' valueof'は 'NullPointerException'をスローします。 – Srinivas

関連する問題