ClassFormatError数组大小> 65535

时间:2013-09-10 21:43:03

标签: java static-block

我有一个生成的类会出现此错误。在这个类中,有一个巨大的静态块(5000+行)。我将块分成几个较小的静态块,但仍然出现此错误。为什么会这样?

修改 代码如下:

private static final Map<Object, Object> nameMap = Maps.newHashMap();
static{
    nameMap.put(xxx);
    .... 5000 similar lines
    nameMap.put(xxx);
}

1 个答案:

答案 0 :(得分:3)

如果只是数据,则需要从资源中读取数据。

安排您的数据文件与类文件位于同一位置,并使用以下内容:

class Primes {

    private static final ArrayList<Integer> NUMBERS = new ArrayList<>();
    private static final String NUMBER_RESOURCE_NAME = "numbers.txt";

    static {
        try (InputStream in = Primes.class.getResourceAsStream(NUMBER_RESOURCE_NAME);
                InputStreamReader isr = new InputStreamReader(in);
                BufferedReader br = new BufferedReader(isr)) {
            for (String line; (line = br.readLine()) != null;) {
                String[] numberStrings = line.split(",");
                for (String numberString : numberStrings) {
                    if (numberString.trim().length() > 0) {
                        NUMBERS.add(Integer.valueOf(numberString));
                    }
                }
            }
        } catch (NumberFormatException | IOException e) {
            throw new IllegalStateException("Loading of static numbers failed", e);
        }
    }
}

我用它来读取逗号分隔的1000个素数列表。