Más sobre Windows ... la variable java.home no siempre es la misma ubicación que el binario que se ejecuta.
Como dice Denis The Menace, el instalador coloca archivos Java en Archivos de programa , pero también java.exe en System32 . Sin nada relacionado con Java en la ruta, java -version todavía puede funcionar. Sin embargo, cuando se ejecuta el programa de PeterMmm, informa el valor de Archivos de programa como java.home , esto no está mal (Java está instalado allí), pero el binario real que se ejecuta se encuentra en System32 .
Una forma de buscar la ubicación del binario java.exe , agregue la siguiente línea al código de PeterMmm para mantener el programa funcionando un poco más:
try{Thread.sleep(60000);}catch(Exception e) {}
Compile y ejecútelo, luego busque la ubicación de la imagen java.exe . Por ejemplo, en Windows 7, abra el administrador de tareas, busque la entrada java.exe , haga clic derecho y seleccione 'abrir ubicación de archivo', esto abre la ubicación exacta del binario Java. En este caso sería System32 .