Existe-t-il une taille maximale pour le code en Java? J'ai écrit une fonction avec plus de 10 000 lignes. En fait, 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 surmonter cela?
java
arrays
compiler-errors
code-size
trinité
la source
la source
Réponses:
Mais vous devriez nettoyer ça!
Utilisez un
.properties
fichier pour stocker ces données et chargez-le viajava.util.Properties
Vous pouvez le faire en plaçant le
.properties
fichier sur votre chemin de classe et en utilisant:la source
Il existe une limite de taille de 64K octets-code sur un méthode
Cela dit, je suis d'accord avec Richard; pourquoi avez-vous besoin d'une méthode aussi large? Compte tenu de l'exemple dans l'OP, un fichier de propriétés devrait suffire ... ou même une base de données si nécessaire.
la source
enum
voirSelon la spécification de la machine virtuelle Java , le code d'une méthode ne doit pas dépasser 65536 octets :
code_length
définit la taille de l'code[]
attribut qui contient le bytecode réel d'une méthode:la source
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?
la source
Essayez de refactoriser votre code. Il y a une limite sur la taille de la méthode en Java.
la source
Comme mentionné dans d'autres réponses, il y a une limite de 64 Ko de bytecode pour une méthode (au moins dans le compilateur Java de Sun)
Trop moi, il serait plus logique de diviser cette méthode en plusieurs méthodes - chacune attribuant certaines choses liées au tableau (il serait peut-être plus logique d'utiliser une ArrayList pour ce faire)
par exemple:
Vous pouvez également charger les éléments à partir d'une ressource statique s'ils sont corrigés comme à partir d'un fichier de propriétés
la source
J'ai moi-même rencontré ce problème. La solution qui a fonctionné pour moi était de refactoriser et de réduire la méthode à des morceaux plus faciles à gérer. Comme vous, j'ai affaire à une méthode de ligne de près de 10K. Cependant, avec l'utilisation de variables statiques ainsi que de fonctions modulaires plus petites, le problème a été résolu.
Il semble qu'il y aurait une meilleure solution de contournement, mais en utilisant Java 8, il n'y en a pas ...
la source
Cette erreur se produit parfois en raison d'un code trop volumineux dans une seule fonction ... Pour résoudre cette erreur, divisez cette fonction en plusieurs fonctions, comme
la source
Vous pouvez ajouter une autre méthode pour créer de l'espace pour votre code pour un espace de données supplémentaire, vous pouvez avoir une méthode qui prend une grande quantité d'espace de données. Essayez de diviser vos méthodes car j'ai eu le même problème et corrigez-le en créant une autre méthode supplémentaire pour les mêmes données dans mon code java Android.Le problème a disparu après que je l'ai fait.
la source
J'ai une énumération qui fait que la taille du fichier .java dépasse 500 Ko. Eclipse peut le construire pour une raison quelconque; le fichier build.xml ant exporté par éclipse ne peut pas. J'examine ceci et mettrai à jour cet article.
la source
Comme il y a une limite de taille pour les méthodes et que vous ne voulez pas reconcevoir votre code pour le moment, vous pouvez peut-être diviser le tableau en 4 à 5 parties, puis les mettre en différentes méthodes. Au moment de la lecture du tableau, appelez toutes les méthodes d'une série. Vous pouvez également gérer un compteur pour savoir combien d'index vous avez analysé.
la source
cela est dû à tout le code dans une solution de méthodes uniques: créez plus de petites méthodes, puis cette erreur disparaîtra
la source
ok peut-être que cette réponse est trop tardive mais je pense que cette façon est meilleure qu'une autre, alors
par exemple, nous avons 1000 lignes de données dans le code
Cassez-les
pour de meilleures performances, insérez un "si" dans vos codes
J'espère que ce code vous aide
la source