Eine einzelne Methode in einer Java-Klasse darf höchstens 64 KB Bytecode enthalten.
Aber Sie sollten das aufräumen!
Verwenden Sie .properties
file zum Speichern dieser Daten und laden Sie sie über java.util.Properties
Sie können dies tun, indem Sie die Datei .properties
auf Ihren Klassenpfad setzen und Folgendes verwenden:
Für eine Methode
gibt es eine Größenbeschränkung von 64 KBNachdem ich das gesagt habe, muss ich Richard zustimmen; Warum brauchst du eine so große Methode? Angesichts des Beispiels im OP sollte eine Eigenschaftendatei genügen ... oder sogar eine Datenbank, falls erforderlich.
Laut der Java Virtual Machine-Spezifikation sollte Der Code einer Methode darf nicht größer als 65536 Byte sein :
Der Wert des Elements
code_length
muss kleiner als 65536 sein.
Wo code_length
in §4.7.3 definiert ist co_de% Attribut :
Code
: Der Wert des Elementscode_length
gibt die Anzahl der Bytes im Code-Array für diese Methode an. Der Wert von code_length muss größer als Null sein. Das Code-Array darf nicht leer sein.
code_length
: Das Code-Array gibt die tatsächlichen Bytes des Java Virtual Machine-Codes an, die die Methode implementieren.
Wie in anderen Antworten erwähnt, gibt es eine 64 KB Bytecode-Begrenzung für eine Methode (zumindest in Suns Java-Compiler)
Zu mir wäre es sinnvoller, diese Methode in mehrere Methoden aufzuteilen, die jeweils bestimmte verwandte Dinge dem Array zuweisen (dies könnte sinnvoller sein, um eine ArrayList zu verwenden)
zum Beispiel:
%Vor%Alternativ können Sie die Elemente aus einer statischen Ressource laden, wenn sie wie in einer Eigenschaftendatei
festgelegt sindSie können eine weitere Methode hinzufügen, um Speicherplatz für Ihren Code für zusätzlichen Datenbereich zu schaffen. Möglicherweise verfügen Sie über eine Methode, die viel Speicherplatz in Anspruch nimmt. Versuchen Sie, Ihre Methoden zu teilen, weil ich das gleiche Problem hatte, und beheben Sie es, indem Sie eine weitere Methode für die gleichen Daten in meinem Java-Code erstellen. Das Problem war weg, nachdem ich das getan hatte.
Ich bin selbst auf dieses Problem gestoßen. Die Lösung, die für mich funktionierte, bestand darin, die Methode zu überschaubaren Stücken umzuformen und zu verkleinern. Wie Sie, habe ich es mit einer fast 10K Zeilen Methode zu tun. Mit der Verwendung von statischen Variablen sowie kleineren modularen Funktionen wurde das Problem jedoch gelöst.
Scheint, es gäbe eine bessere Problemumgehung, aber mit Java 8 gibt es keine ...
Dieser Fehler tritt manchmal aufgrund zu großen Codes in einer einzigen Funktion auf ... Um diesen Fehler zu lösen, teilen Sie diese Funktion in mehrere Funktionen auf, z. B.
%Vor%Tags und Links java arrays compiler-errors code-size