0

定数クラスを呼び出すJUnitを作成しました。ここでは、静的な最終リストにアクセスしようとしています

public static final List<String> SKIPPED_DIMENSION_LIST = new ArrayList<String>();

static{ SKIPPED_DIMENSION_LIST.add(PRODUCT_CATEGORY_DISPLAY); 
    SKIPPED_DIMENSION_LIST.add(PRODUCT_CATEGORY_SUB); 
    SKIPPED_DIMENSION_LIST.add(PRODUCT_CATEGORY_SUB_GROUP); 
    SKIPPED_DIMENSION_LIST.add(PRODUCT_CATEGORY_SUB_GROUP_ID); 
    SKIPPED_DIMENSION_LIST.add(PRODUCT_CATEGORY_ID); 
    SKIPPED_DIMENSION_LIST.add(PRODUCT_CATEGORY_GROUP_ID); }

今、JUnit スレッド経由でこのリストにアクセスしているときに、このエラーが発生しています。

    java.lang.ExceptionInInitializerError
        at java.lang.J9VMInternals.initialize(J9VMInternals.java:222)
        at com.mns.commerce.searchnav.constants.MSEndecaConstants.<clinit>(MSEndecaConstants.java:169)
        at java.lang.J9VMInternals.initializeImpl(Native Method)
        at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
        at com.mns.commerce.searchnav.utils.MSSearchResposeBOTransformer.getRefinementsDetails(MSSearchResposeBOTransformer.java:460)
        at com.mns.commerce.searchnav.utils.MSSearchResposeBOTransformer.buildFacets(MSSearchResposeBOTransformer.java:362)
        at com.mns.commerce.searchnav.utils.MSSearchResposeBOTransformer.populateResults(MSSearchResposeBOTransformer.java:106)
        at com.mns.commerce.searchnavunit.test.MSSearchResposeBOTransformerTest.testPopulateResults(MSSearchResposeBOTransformerTest.java:97)

一方、 a の代わりに staticEnumが定義されている場合static final listは、正常に機能しています。なぜこれが起こっているのですか?

4

1 に答える 1

0

このコードも実行されており、このコードにエラーはありません。私のJDKバージョンは1.6です。

import java.util.ArrayList; java.util.List をインポートします。

public class test {

private static final String PRODUCT_CATEGORY_DISPLAY = "a";
private static final String PRODUCT_CATEGORY_SUB = "b";
private static final String PRODUCT_CATEGORY_SUB_GROUP = "c";
private static final String PRODUCT_CATEGORY_SUB_GROUP_ID = "d";
private static final String PRODUCT_CATEGORY_ID = "e";
private static final String PRODUCT_CATEGORY_GROUP_ID = "f";
public static final List<String> SKIPPED_DIMENSION_LIST = new ArrayList<String>();

static{          
    SKIPPED_DIMENSION_LIST.add(PRODUCT_CATEGORY_DISPLAY);
    SKIPPED_DIMENSION_LIST.add(PRODUCT_CATEGORY_SUB);
    SKIPPED_DIMENSION_LIST.add(PRODUCT_CATEGORY_SUB_GROUP);
    SKIPPED_DIMENSION_LIST.add(PRODUCT_CATEGORY_SUB_GROUP_ID);
    SKIPPED_DIMENSION_LIST.add(PRODUCT_CATEGORY_ID);
    SKIPPED_DIMENSION_LIST.add(PRODUCT_CATEGORY_GROUP_ID);
}      /**      * @param args      */     
public static void main(String[] args) {   
    System.out.println(SKIPPED_DIMENSION_LIST); 
} 

}
于 2012-07-27T08:49:30.367 に答える