Existe algum tamanho máximo para o código em Java? Escrevi uma função com mais de 10.000 linhas. Na verdade, cada linha atribui um valor a uma variável de array.
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";
E, durante a compilação, recebo este erro: código muito grande
Como faço para superar isso?
java
arrays
compiler-errors
code-size
trindade
fonte
fonte
Respostas:
Mas você deve limpar isso!
Use o
.properties
arquivo para armazenar esses dados e carregue-o viajava.util.Properties
Você pode fazer isso colocando o
.properties
arquivo em seu caminho de classe e usar:fonte
Há um limite de tamanho de código de bytes de 64 K em um método
Tendo dito isso, eu tenho que concordar com Richard; por que você precisa de um método tão grande? Dado o exemplo no OP, um arquivo de propriedades deve ser suficiente ... ou mesmo um banco de dados, se necessário.
fonte
enum
para verDe acordo com a especificação da Java Virtual Machine , o código de um método não deve ser maior que 65536 bytes :
code_length
define o tamanho docode[]
atributo que contém o bytecode real de um método:fonte
Isso parece um pouco loucura. Você não pode inicializar a matriz lendo os valores de um arquivo de texto ou alguma outra fonte de dados?
fonte
Tente refatorar seu código. Há limite para o tamanho do método em Java.
fonte
Conforme mencionado em outras respostas, há um limite de 64 KB de bytecode para um método (pelo menos no compilador java da Sun)
Para mim, faria mais sentido quebrar esse método em mais métodos - cada um atribuindo certas coisas relacionadas ao array (pode fazer mais sentido usar um ArrayList para fazer isso)
por exemplo:
Alternativamente, você pode carregar os itens de um recurso estático se eles forem corrigidos como em um arquivo de propriedades
fonte
Eu mesmo tive esse problema. A solução que funcionou para mim foi refatorar e reduzir o método a partes mais gerenciáveis. Como você, estou lidando com um método de quase 10K linhas. Porém, com o uso de variáveis estáticas e também de funções modulares menores, o problema foi resolvido.
Parece que haveria uma solução alternativa melhor, mas usando Java 8, não há nenhuma ...
fonte
Este erro às vezes ocorre devido a um código muito grande em uma única função ... Para resolver esse erro, divida essa função em várias funções, como
fonte
Você pode adicionar outro método para criar espaço para seu código para espaço de dados adicional, você pode ter um método que está ocupando uma grande quantidade de espaço de dados. Tente dividir seus métodos porque tive o mesmo problema e corrija-o criando outro método adicional para os mesmos dados em meu código Java Android. O problema foi embora depois que fiz isso.
fonte
Eu tenho um enum que faz com que o arquivo .java tenha mais de 500 KB. O Eclipse pode construí-lo por algum motivo; o ant build.xml exportado por eclipse não pode. Estou analisando isso e atualizarei este post.
fonte
Como há um limite de tamanho para métodos e você não quer redesenhar seu código neste momento, pode ser que você possa dividir o array em 4-5 partes e depois colocá-las em métodos diferentes. No momento da leitura do array, chame todos os métodos em uma série. Você também pode manter um contador para saber quantos índices analisou.
fonte
isso é devido a todo o código na solução de método único: crie mais alguns métodos pequenos, então este erro desaparecerá
fonte
ok talvez esta resposta seja tarde demais, mas eu acho que esse jeito é melhor do que outro então
por exemplo, temos dados de 1000 linhas no código
quebrá-los
para um melhor desempenho, coloque um "se" em seus códigos
Espero que este código ajude você
fonte