2012-04-21 20 views
6

Tengo un proyecto en el que he estado trabajando y todo iba bien hasta hoy. Tengo cerca de 6000 líneas de código en un documento de clase java. Si trato de poner una cláusula IF más en el código, el programa arroja una excepción cuando se llama a la clase. Todos los fragmentos adicionales que he intentado colocar en la clase hacen que la clase falle cuando se le solicita. Intenté agregar el código de prueba que sé que funciona bien, y todos arrojan el cuadro de diálogo de alerta de fuerza cercana. Confíe en mí, no hay nada de malo en el último fragmento que intento colocar en la clase. Una vez que saco el último fragmento "si", no hay errores. ¿Alguien ha visto esto antes? La excepción se lanza en el emulador, cuando se llama a la clase. Obtengo la ventana de alerta de cierre de fuerza. Aquí está el tamaño del archivo java: 172,503 bytes ¡Gracias de antemano!Existe un límite en el número de líneas de código que puede colocar en un documento de Eclipse Java

+1

* "... el programa arroja una excepción cuando se llama a la clase en" *. ¿Qué excepción? ¿Dónde se lanza la excepción? Por Eclipse? En el programa en ejecución? ¿A qué te refieres con "invocado"? –

+2

Puede encontrarse con el límite de tamaño del método de 64 kb (de bytecode). http://stackoverflow.com/questions/107855/is-here-any-no-of-lines-code-limit-for-a-java-class y http://stackoverflow.com/questions/5689798/why- does-java-limit-the-size-of-a-method-to-65535-byte y http://stackoverflow.com/questions/6570343/maximum-size-of-a-method-in-java –

+7

Debería señale que una clase con 6.000 líneas de código es indicativa de un diseño ** REALMENTE ** malo. Si refactoriza/modulariza su código a algo más razonable, el problema debería desaparecer. –

Respuesta

3

Me encontré con ese problema hace algún tiempo y descubrí que no es un problema tener 50k líneas y más de código en una clase siempre que no se exceda el límite del método.

Dependiendo de lo que hay en un solo método que realmente causa el tamaño del código de bytes, experimenté limitaciones entre 2-3k líneas de código/método.

añadido:

por cierto en un momento determinado, de hecho, Eclipse se bloquea cuando su código total se convierte en demasiado grande para compilar - sólo aumentar la memoria de Eclipse a 1 Gb o menos. Hasta ahora eso fue suficiente para que mis proyectos tuvieran unas 100k líneas en total ...

+0

Corté el método y redirigí las otras clases para encontrar los trozos, funciona como un amuleto. El tamaño del método fue excedido. Este me costó un día entero. Pero, de todos modos, ¿qué valor tiene un día en la vida de un nudo? LOL – lastshadowrider

+0

@lastshadowrider Es curioso, ¿cuántas líneas tuvo su método para colgarse? – blessenm

+0

aproximadamente 5,980 líneas antes de que se bloquee. Pensé que seguiría añadiendo al método, porque todo estaba funcionando bien. Y luego boom. – lastshadowrider

1

Me he dado cuenta de esto antes, Eclipse se escapa de Java, por lo que es muy intensivo de RAM, si tiene demasiado código para que necesite más de lo que se asigna se bloqueará.

+3

¿Cuánto es demasiado? El apk completo tiene solo 512kb. – lastshadowrider

4

puede modificar utilizando los mismos ajustes siguientes:

--launcher.XXMaxPermSize 
256m 
--launcher.defaultAction 
openFile 
-vmargs 
-Dosgi.requiredJavaVersion=1.5 
-Xms40m 
-Xmx512m 
+0

¿dónde coloco estas declaraciones? – lastshadowrider

+0

abra el archivo eclipse.ini y cambie la configuración – Satya

+0

Gracias por la ayuda Satya – lastshadowrider

1

¿Existe un límite en el número de líneas de código que puede poner en una doument Java Eclipse.

No exactamente.

Existen límites en el número de códigos de bytes en un método compilado, y otros similares, pero estos son impuestos por el formato de archivo de clase Java (es decir, la especificación JVM) no por Eclipse.

También es posible que Eclipse necesite más memoria, aunque no creo que al agregar una sola declaración if se desencadene de manera confiable. (Y si lo hiciera, la excepción le diría que estaba fuera de la memoria ...)

Cuestiones relacionadas