108 votes

Erreur de compilation "Code too large" en Java

Existe-t-il une taille maximale pour le code en Java? J'ai écrit une fonction avec plus de 10 000 lignes. En réalité, chaque ligne attribue une valeur à une variable de tableau.

         arts_bag[10792]="newyorkartworld";
        arts_bag[10793]="leningradschool";
        arts_bag[10794]="mailart";
        arts_bag[10795]="artspan";
        arts_bag[10796]="watercolor";
        arts_bag[10797]="sculptures";
        arts_bag[10798]="stonesculpture";  
 

Et lors de la compilation, j'obtiens cette erreur: code trop volumineux

Comment puis-je surmonter cela?

108voto

Bozho Points 273663

ce fil dit

Une seule méthode dans une classe Java peut être à plus de 64 ko de bytecode.

Mais vous devez nettoyer cette place!

Utiliser .properties le fichier pour stocker ces données, et de les charger via java.util.Properties

Vous pouvez le faire en plaçant l' .properties le fichier sur votre chemin de classe, et l'utilisation:

Properties properties = new Properties();
InputStream inputStream = getClass().getResourceAsStream("yourfile.properties");
properties.load(inputStream);

20voto

Everyone Points 1157

Il y a une limite de taille de 64Koctets de code sur une méthode

Cela dit, je suis d’accord avec Richard; pourquoi avez-vous besoin d'une méthode aussi large? Étant donné l'exemple de l'OP, un fichier de propriétés devrait suffire ... ou même une base de données si nécessaire.

16voto

Joachim Sauer Points 133411

En fonction de la Machine Virtuelle Java de spécification, le code d'une méthode ne doit pas être plus grand que 65536 octets:

La valeur de l' code_length élément doit être inférieure à 65536.

code_length est défini dans le§4.7.3 L' Code d'Attribut:

code_length: La valeur de l' code_length élément donne le nombre d'octets dans le code de matrice pour cette méthode. La valeur de code_length doit être supérieure à zéro; le code de la matrice ne doit pas être vide.

code[]: Le code du tableau donne les octets de la machine virtuelle Java code qui mettent en œuvre la méthode.

6voto

RichardOD Points 19942

Cela ressemble un peu à la folie. Ne pouvez-vous pas initialiser le tableau en lisant les valeurs d'un fichier texte ou d'une autre source de données?

2voto

Padmarag Points 3489

Essayez de refactoriser votre code. La taille de la méthode est limitée en Java.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X