2012-07-27 38 views
0

我写一个JUnit在那里调用恒类,在这里我们试图访问一个静态最终名单错误的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) 

然而,如果静态Enum定义,而不是static final list那么它工作正常。任何想法为什么发生这种情况?

+0

如果从列表声明中删除最终修饰符会发生什么? – JamesB 2012-07-27 07:39:58

+0

尝试在静态初始化器中的代码周围放置try/catch(Throwable t)块,并查看它是否实际上抛出了某些描述的异常。这会给你一个更好的线索。 – 2012-07-27 08:52:41

+0

有关于此的任何更新? – Sikorski 2012-07-27 08:54:44

回答

0

此代码也在运行,并且此代码没有任何错误。我的JDK版本是1.6。

import java.util.ArrayList; import 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); 
} 

}