2013-09-10 48 views
-2

我有一個生成的類,它會得到這個錯誤。在這個類裏面,有一個巨大的靜態塊(5000+行)。我把塊分成幾個較小的靜態塊,但仍然有這個錯誤。這是爲什麼ClassFormatError數組大小> 65535

編輯 代碼如下所示:

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

如果我們能看到有問題的代碼,我們將能夠幫助更多。請問 –

+1

[SSCCE](http://www.sscce.org/)? – Xynariz

+0

看看編譯器選項或拆分更多類 – lordkain

回答

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張素數的逗號分隔的列表。

+1

您是否將此事發布到正確的問題? –

+2

@owlstead - 如果它只是數據,那麼這應該解決這個問題。似乎沒有跡象表明*巨大的靜態塊*的性質/內容。標題確實提到*數組大小*。 – OldCurmudgeon

+0

@owlstead參差不齊的問題描述確實聽起來像OP試圖將大數據集塞進靜態初始化程序出於某種原因。對於這樣一個巨大的代碼塊,我想不出任何其他模糊的正當理由。 – chrylis