2010-06-25 11 views
26

Ho un file Java, che quando compilato, sarà in grado di vedere solo i primi 100 errori sulla console dopo che il java compiler (javac) è terminato. Come potrò vedere tutti gli errori di compilazione sulla console? Grazie in anticipo- opensidErrori di compilazione Java limitati a 100

+1

molto probabilmente c'è un singolo errore che causa tutti gli errori successivi. Tutti gli altri errori non sono rilevanti se si risolve la causa principale. –

+0

su ulteriore riflessione ci potrebbe essere un motivo oscuro per voler vedere il totale. forse per mantenere una metrica di quanto sia pessima una determinata base di codice? sembra ancora un po 'dubbioso per me. –

+0

Poiché la stragrande maggioranza dei messaggi di errore sono probabilmente messaggi fantasma, @Peter Recore, si, sarebbe una metrica dubbia. ;) –

risposta

29

Generalmente il compilatore rinuncerà dopo 100 errori. La maggior parte degli errori successivi a questo punto saranno probabilmente causati da uno dei primi errori. Se devi avere più errori controlla le opzioni javac -Xmaxerrs e -Xmaxwarns

+0

--Xmaxerrs 1000 per esempio. Ometti il ​​segno di uguale dall'argomento. –

+1

Se desidero passare questo valore a Javadoc di 'org.apache.tools.ant.taskdefs.Javadoc' Come specificare questi valori? –

+0

Ad es: javadoc.createArg(). SetValue ("- J-XX: MaxPermSize =" + vmMaxPermSize); Quale sarà il tipo di dati di Xmaxerrs e Xmaxwarns? il tipo intero è ok? –

4

Hai provato l'opzione da riga di comando -Xmaxerrors? vai a here e cerca "maxerrors"

+2

Grazie Peter its -Xmaxerrs – openssid

0

Se si utilizza il sistema operativo Windows, provare a compilare i sorgenti utilizzando il prompt dei comandi. Quindi il prompt dei comandi non uscirà sugli errori.

+0

Grazie Purushotham ma sto usando Linux !!! – openssid

+0

Quindi puoi compilare quello usando il Terminale. Se ancora non si riesce a vedere, utilizzare il metodo printStack per stampare il messaggio di errore in un file. –

+0

Sì Purushotham, sto usando Terminale, ma avevo errori di compilazione, ero interessato a conoscere errori oltre 100, con "javac -Xmaxerrs 200" sono in grado di vedere 200 errori. – openssid

2

Se si utilizza Eclipse, Preferences > Java > Compiler > Building > General consente di specificare più problemi per unità.

1

Java compilatore si arrende dopo un certo numero di errori quando si compila un file perché Java è una di queste lingue che è difficile fonte di ri-sincronizzazione di stato previsto dopo un errore. Ciò significa che un singolo fuori luogo virgola può generare decine di errori (o più — modo più in alcuni casi limite estremi) che hanno poco o nulla a che fare con l'errore effettivo. Non ha senso stampare "tutti gli errori" nel codice sorgente perché la maggior parte di essi sono probabili errori fantasma.

Correggere i primi errori chiari e comprensibili che è possibile trovare nell'output del compilatore e riprovare. (Non dimenticare di cercare le varianti di quegli errori nel resto della tua fonte!) Ottenere più messaggi di errore per la corsa di compilazione probabilmente non sarà d'aiuto e invece, in effetti, servirà solo a sconcertare e scoraggiare.

+0

Mi interessava sapere quanti errori possono verificarsi con semplici errori. – openssid

+1

Non lo troverai. Questo è il punto. La maggior parte degli errori sono errori fantasma causati dai limiti del parser (e dalla natura quasi inaccessibile di Java). Tutto quello che scoprirai è che il compilatore è davvero stupido e non riesce a capire errori reali rispetto a "errori di errata opportunità". –

+0

Non so perché pensi che Java sia "una di quelle lingue che è difficile risincronizzare l'origine allo stato previsto dopo un errore" e "quasi impossibile". È un linguaggio semicolon-terminator piuttosto standard, del tipo che abbiamo creato parser solidi per decenni, e i parser hanno il recupero degli errori in essi, dagli anni '70 se non prima. Gli errori di compilazione a cascata sono di solito dovuti a identificatori non dichiarati e altri errori * semantici *. – EJP

8

Se stai usando Gradle:

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

E se la vostra utilizzando formica, assicurarsi di utilizzare

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

e non

<compilerarg value="-Xmaxerrs 5"/> 

mi dimentico sempre.

+0

se si desidera utilizzare "-Xmaxerrs 5", è possibile utilizzare alternativa ''. –

1

Nel caso in cui si utilizza formica, il seguente funziona:

<compilerarg line="-Xmaxerrs 10000" /> 

nota che si sta utilizzando l'argomento "linea", piuttosto che l'argomento "valore", come nella risposta precedente https://stackoverflow.com/a/42396745/2200690

Problemi correlati