Properly installing java 8 along with java 7
Solution 1
The problem is that Java 8 installs a lot of stuff that you don't really need:
\windows\system32 contains Java 8 java.exe, javaw.exe and javaws.exe. Your path probably has system32 near the beginning, so these tend to be run by default.
The system path variable starts with C:\programdata\Oracle\Java\javapath. This folder contains java.exe, javaw.exe and javaws.exe as symlinks to the JRE 8 executables.
I've deleted the system32 files and removed C:\programdata\Oracle\Java\javapath from the system path. This seems to cure the problem. I can now switch versions by pointing JAVA_HOME and PATH to the appropriate folders.
Oracle, it seems, are determined to make it hard to run multiple versions. This is understandable with the JRE, but it's crazy with JDKs, as developers almost always need multiple versions of Java.
EDIT: I find this batch script is useful for switching JDKs. Usage: jdk.bat 6|7|8. You might have to edit the installation location for Java.
@echo off
if "%1"=="" goto report
set _version=%1
shift
if "%1"=="DBG" shift & echo on
set _command=%1 %2 %3 %4 %5
set _jdkdir=
set _jdkver=
for /D %%f in ("C:\Program Files\java\"jdk1.%_version%.*) do call :found "%%f"
if "%_jdkdir%"=="" goto notfound
set java_home=C:\Program Files\java\%_jdkdir%
call :javapath
path %new_path%
goto :report
:javapath
setlocal enabledelayedexpansion
set _jdirs=
for /D %%j in ("C:\Program Files\java\*") do set _jdirs=!_jdirs!#%%~fj\bin
set _jdirs=%_jdirs%#
set _javabin=%java_home%\bin
set _fpath="%PATH:;=" "%"
call :checkpath %_fpath%
endlocal & set new_path=%_javabin%
goto :eof
:checkpath
if _%1==_ goto :eof
echo %_jdirs% | find /i "#%~1#" 1>nul 2>&1
set _err=%errorlevel%
if not %_err%==0 set _javabin=%_javabin%;%~1
if %_err%==0 echo Removed %~1 from path
shift
goto :checkpath
:report
javac -version
%_command%
goto :eof
:notfound
echo No JDK matching [C:\Program Files\java\jdk1.%_version%.*] found.
goto :eof
:found
set _jdkdir=%~n1%~x1
for /F "tokens=2,3 delims=." %%a in ("%_jdkdir%") do set _jdkver=1.%%a.%%b
goto :eof
Solution 2
In the START menu type "regedit" to open the Registry editor
Go to "HKEY_LOCAL_MACHINE" on the left-hand side registry explorer/tree menu
Click "SOFTWARE" within the "HKEY_LOCAL_MACHINE" registries
Click "JavaSoft" within the "SOFTWARE" registries
Click "Java Runtime Environment" within the "JavaSoft" list of registries here you can see different versions of installed java
Click "Java Runtime Environment"- On right hand side you will get 4-5 rows . Please select "CurrentVersion" and right Click( select modify option) Change version to "1.7"
Now the magic has been completed
Solution 3
You can't have your cake and eat it too. :) When you set your PATH variable to JDK 1.8, The problem should resolve. You can run your programs in JDK 1.7 by setting PATH manually using set PATH from command prompt or can go to the JDK 1.7 directory and run your program from there. But there can be only one JDK in your PATH.
Solution 4
I had the same problem then realized my program was running out of c:\Windows\SysWOW64
and hence running the old java.exe
. Once I stopped running out of that directory (which contains the Java 7 exe
), the problem went away since it followed the path properly to java8
.
Solution 5
If you are not comfortable to remove any files in Windows manually, just put your JAVA_HOME path in the front of Windows dirs.
Define JAVA_HOME environment variable in Windows 7 and use it in variable PATH on first position of Path variable.
JAVA_HOME -> D:\dev\Java\jdk1.8.0_45
Path -> %JAVA_HOME%\bin;%SystemRoot%\system32;
bachr
Updated on July 09, 2022Comments
-
bachr almost 2 years
I've JDK 1.7 installed on my windows 7 machine and after installing JDK 1.8 u20 I'm having following error:
C:\>java -version Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' has value '1.8', but '1.7' is required. Error: could not find java.dll Error: Could not find Java SE Runtime Environment.
My
PATH
variable points to the older version (i.e. 1.7).What is wrong here and how I could use java 8 along with java 7?
-
Mr. Llama over 9 yearsBah! That did the trick for me! I did everything else but it was still throwing issues. Removing them from the SysWOW64 folder was the final bit I needed.
-
Jeff Miller over 9 yearsI agree. Oracle does not make it easy to use multiple JDK's. I removed C:\programdata\Oracle\Java\javapath from my path to allow me to use plain old environment variables to control jdk to use.
-
srinivas almost 9 yearsUpdating Path variable in Environment variables to jdk 1.8 resolved , showing the above error.
-
James Drinkard over 8 yearsI'm running java 1.6, but I have 1.7 and 1.8 installed in windows 7 and this fixed it. Thanks!
-
peter_pilgrim over 8 yearsThis little DOS script works rather well. I saved it as
switch-jdk.bat' in the %USERPROFILE%\bin. I was able to run it with
switch-jdk 7' and thenswitch-jdk 8' and then
switch-jdk 9'. Of course, add %USERPROFILE%\bin to your PATH environment first! Has anyone written a BASH shell equivalent to this yet?