Esto está relacionado con una pregunta anterior de un usuario diferente, que pregunta How to detect that code is running inside eclipse IDE.¿Puedo averiguar si el programa java se inició utilizando java o javaw
Me di cuenta de que Eclipse siempre inicia programas con javaw
en lugar de java
. (Esto no implica que un programa lanzado con javaw
se lanzó desde Eclipse).
puedo encontrar los argumentos que se pasan usando
RuntimeMXBean RuntimemxBean = ManagementFactory.getRuntimeMXBean();
List<String> lst = RuntimemxBean.getInputArguments();
for (int i = 0; i < lst.size(); i++)
System.out.println(lst.get(i));
Pero esto no me dice si fue lanzado usando java
o javaw
.
- ¿Hay alguna manera de averiguarlo si se puso en marcha utilizando
java
ojavaw
? - ¿Por qué Eclipse usa
javaw
para iniciar programas?
? Aún puede escribir en las secuencias de salida estándar, el sistema operativo lo dirigirá silenciosamente a/dev/null o a cualquier otra secuencia que haya conectado mediante el comando de ejecución. Lo mismo con los flujos de entrada, puede ejecutar algo con javaw y entrada de canal desde un archivo u otro flujo. – jwenting
@jwenting, sí, aún puede escribir en System.out aunque System.console() devuelva null. –
Aparentemente (al menos en java 7), si ejecuta en la línea de comando redirigiendo la salida a un archivo, 'System.console()' también es nulo. –