2010-06-25 13 views
26

Tengo un archivo de Java, que cuando compilé, voy a ser capaz de ver sólo los primeros 100 errores en la consola después de que el compilador de Java (javac) salidas. ¿Cómo podré ver todos los errores de compilación en la consola? Gracias en Advance opensiderrores de compilación de Java limitado a 100

+1

lo más probable es que haya un solo error que esté causando todos los errores posteriores. El resto de los errores no son relevantes si corrige la causa raíz. –

+0

después de una mayor reflexión puede haber una razón oscura para querer ver el total. tal vez para mantener una métrica de cuán mala es una base de código particular? todavía parece un poco dudoso para mí. –

+0

Dado que la abrumadora mayoría de los mensajes de error son probablemente mensajes fantasma, @Peter Recore, sí, eso sería una métrica dudosa. ;) –

Respuesta

29

Generalmente el compilador va a renunciar después de 100 errores. La mayoría de los errores posteriores a este punto probablemente serán causados ​​por uno de los primeros errores. Si debe tener más errores, consulte las opciones javac -Xmaxerrs y -Xmaxwarns

+0

- Xmaxerrs 1000 por ejemplo. Omita el signo igual del argumento. –

+1

Si deseo pasar este valor a Javadoc de 'org.apache.tools.ant.taskdefs.Javadoc '¿Cómo especificar estos valores? –

+0

Por ejemplo: javadoc.createArg(). SetValue ("- J-XX: MaxPermSize =" + vmMaxPermSize); ¿Cuál será el tipo de datos de Xmaxerrs y Xmaxwarns? ¿El tipo de entero está bien? –

4

¿Ha probado la opción de línea de comando -Xmaxerrors? vaya here y busque "maxerrors"

+2

Gracias Peter es -Xmaxerrs – openssid

0

Si está utilizando el sistema operativo Windows, intente compilar sus fuentes utilizando el símbolo del sistema. Entonces ese símbolo del sistema no saldrá de los errores.

+0

Gracias Purushotham pero estoy usando Linux !!! – openssid

+0

Luego puede compilar eso usando la Terminal. Si aún no puede ver, utilice el método printStack para imprimir el mensaje de error en un archivo. –

+0

Sí Purushotham, estoy usando Terminal, pero estaba teniendo errores de compilación, estaba interesado en saber los errores más allá de 100, con "javac -Xmaxerrs 200" puedo ver 200 errores. – openssid

2

Si utilizas Eclipse, Preferences > Java > Compiler > Building > General le permitirá especificar más problemas por unidad.

1

El compilador de Java se da por vencido después de un cierto número de errores al compilar un archivo porque Java es uno de los idiomas que es difícil de re-sincronización de origen al estado de espera después de un error. Esto significa que un solo fuera de lugar semi-colon puede generar decenas de errores (o más — manera más en algunos casos borde extremo) que tienen poco o nada que ver con el error real. No tiene sentido imprimir "todos los errores" en su código fuente porque la mayoría de ellos son probablemente errores fantasmas.

Fijar los primeros errores claros y comprensibles se puede encontrar en su salida del compilador y vuelve a intentarlo. (¡No olvide buscar variantes de esos errores en el resto de su fuente!) Obtener más mensajes de error por ejecución de compilación probablemente no ayude y, en cambio, de hecho, solo servirá para desconcertar y desalentar.

+0

Estaba interesado en saber cuántos errores pueden ocurrir por simples errores. – openssid

+1

No lo encontrarás. Ese es el punto. La mayoría de los errores son errores fantasmas causados ​​por las limitaciones del analizador (y la naturaleza casi indescifrable de Java). Todo lo que encontrarás es que el compilador es realmente estúpido y no puede descifrar los errores reales frente a los "errores de mala oportunidad". –

+0

No sé por qué piensas que Java es "uno de esos idiomas que es difícil volver a sincronizar la fuente con el estado esperado después de un error" y "casi indestructible". Es un lenguaje de terminación de punto y coma bastante estándar, del tipo que hemos estado desarrollando analizadores sólidos durante décadas, y los analizadores sintéticos tienen recuperación de errores en ellos, desde la década de 1970, si no antes. Los errores de compilación en cascada generalmente se deben a identificadores no declarados y otros errores * semánticos *. – EJP

8

Si está utilizando Gradle:

allprojects { 
    gradle.projectsEvaluated { 
    tasks.withType(JavaCompile) { 
     options.compilerArgs << "-Xmaxerrs" << "1000" 
    } 
    } 
} 
1

Y si el uso de hormiga, asegúrese de usar

<compilerarg value="-Xmaxerrs"/> 
<compilerarg value="5"/> 

y no

<compilerarg value="-Xmaxerrs 5"/> 

siempre olvido.

+0

si desea utilizar "-Xmaxerrs 5", puede usar la alternativa '' en su lugar. –

1

En caso de que utilice hormiga, el siguiente trabajo:

<compilerarg line="-Xmaxerrs 10000" /> 

Tenga en cuenta que está utilizando el argumento de la "línea" en lugar de argumento "valor" como en la respuesta anterior https://stackoverflow.com/a/42396745/2200690

Cuestiones relacionadas