Come altri hanno affermato, è necessario utilizzare System.exit()
per ottenere l'output desiderato. La ragione di ciò è che System.exit()
dirina direttamente i programmi ed esce restituendo il valore come definito.
Se vi stavate chiedendo il motivo per cui non siamo riusciti a restituire nulla dal metodo main
, la risposta è - in java main
metodo non ritorna mai nulla, se si analizza la dichiarazione d'oro richiesto
public static void main()
si vedrebbe, in Java main ha un tipo di ritorno come void
.
Quindi, se si sta verificando lo stato di ritorno di un programma java dal programma chiamante (Shell in questo caso), si sta tentando di leggere effettivamente lo stato di uscita di jvm
e non del proprio programma java che sarebbe normale condizione essere sempre uguale a zero (0) anche se si programma in modo anomalo a causa di qualsiasi eccezione. Si otterrebbe uno stato di uscita diverso da zero solo se il jvm si arresta a causa di motivi imprevisti come OutOfMemory
o qualcosa di simile critico.
Spero che questo aiuti a comprendere lo stato di uscita del programma java.
C'è un altro modo per acquisire lo stato poiché in Java System.exit() non è il modo normale per uscire. – vino
è possibile rilevare lo stato utilizzando echo $?, Anche se il programma java non termina con System.exit(), per impostazione predefinita restituisce lo stato 0 (significa Success) al sistema operativo all'uscita normale del programma. – Stauz