Questo è correlato a una domanda precedente di un utente diverso, chiedendo How to detect that code is running inside eclipse IDE.Posso scoprire se il programma java è stato avviato utilizzando java o javaw
Ho notato che Eclipse avvia sempre programmi con javaw
anziché java
. (Ciò non implica che un programma lanciato con javaw
sia stato lanciato da Eclipse).
posso trovare gli argomenti passati usando
RuntimeMXBean RuntimemxBean = ManagementFactory.getRuntimeMXBean();
List<String> lst = RuntimemxBean.getInputArguments();
for (int i = 0; i < lst.size(); i++)
System.out.println(lst.get(i));
Ma questo non mi dice se è stato lanciato utilizzando java
o javaw
.
- Esiste un modo per scoprirlo se è stato lanciato utilizzando
java
ojavaw
? - Perché Eclipse utilizza
javaw
per avviare programmi?
? È ancora possibile scrivere sui flussi di output standard, sarà semplicemente silenziato dal sistema operativo su/dev/null o su qualsiasi altro stream a cui è stato collegato utilizzando il comando di avvio. Stessa cosa con i flussi di input, è possibile avviare qualcosa con input javaw e pipe, ad esempio un file o un altro stream. – jwenting
@jwenting, sì, è ancora possibile scrivere su System.out anche se System.console() restituisce null. –
Apparentemente (almeno in java 7), se si esegue in riga di comando reindirizzando l'output su un file, anche 'System.console()' è nullo. –