I’ve created a small executable that takes the work out of setting the java environment variable that some people struggle with. It was created using bat2exe and makes life simple if you just want Java to work from the command line.
It has been tested and works in XP and Wndows 7 (32 and 64 bit)…should also work in Windows 2000 and Vista without issues.
NOTE: In Windows 7 & Vista you need to run as Administrator.
You can grab my executable here.
See the source batch file below:
@echo off if exist "C:\Users\Default\ntuser.dat" set OS_ENVIRON="win7" if exist "C:\Documents and Settings\Default User\ntuser.dat" set OS_ENVIRON="winxp" IF NOT DEFINED OS_ENVIRON goto ERR setlocal ENABLEEXTENSIONS set VALUE_NAME=CurrentVersion if exist "C:\Program Files (x86)" goto AMD64 if exist "C:\Program Files" goto x86 goto ERR :AMD64 set ARCH_TYPE="AMD64" set KEY_NAME="HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" goto exec :x86 set ARCH_TYPE="x86" set KEY_NAME="HKLM\SOFTWARE\JavaSoft\Java Runtime Environment" GOTO exec :exec :: :: get the current version :: if %OS_ENVIRON%=="winxp" set SKIP_TOKENS="usebackq skip=4 tokens=3" if %OS_ENVIRON%=="win7" set SKIP_TOKENS="usebackq skip=2 tokens=3" FOR /F %SKIP_TOKENS% %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO ( set ValueValue=%%A ) if defined ValueValue ( @echo the current Java runtime is %ValueValue% ) else ( @echo Java not found...please install and try again! goto end ) set JAVA_CURRENT="%KEY_NAME:~1,-1%\%ValueValue%" set JAVA_HOME=JavaHome :: :: get the javahome :: if %ARCH_TYPE%=="AMD64" goto 64Bit if %ARCH_TYPE%=="x86" goto 32Bit goto ERR :64Bit FOR /F "usebackq skip=2 tokens=3-5" %%A IN (`REG QUERY %JAVA_CURRENT% /v %JAVA_HOME% 2^>nul`) DO ( set JAVA_PATH=%%A %%B %%C ) goto path :32Bit if %OS_ENVIRON%=="winxp" set SKIP_TOKENS="usebackq skip=4 tokens=3,4" if %OS_ENVIRON%=="win7" set SKIP_TOKENS="usebackq skip=2 tokens=3,4" FOR /F %SKIP_TOKENS% %%A IN (`REG QUERY %JAVA_CURRENT% /v %JAVA_HOME% 2^>nul`) DO ( set JAVA_PATH=%%A %%B ) goto path :path if not exist "%JAVA_PATH%" goto PATH_ERR echo The path of the current Java JVM according to the registry is echo %JAVA_PATH% echo. echo Now if we try it: "%JAVA_PATH%\bin\java.exe" -version echo. echo Press CTRL-C to abort or any key to add "%JAVA_PATH%" to the current path pause echo adding "%JAVA_PATH%" to the current path echo adding "%JAVA_PATH%\bin" to the current path reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%PATH%;%JAVA_PATH%;%JAVA_PATH%\bin" /f echo. echo Please reboot for the changes to take effect... pause :END goto exit :PATH_ERR echo Could not resolve Java path! pause goto exit :ERR echo Unsupported architecture! pause :exit