Properly installing java 8 along with java 7

前端 未结 10 1164
无人共我
无人共我 2020-12-04 12:52

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 \'Sof         


        
相关标签:
10条回答
  • 2020-12-04 13:12

    In my case, I uninstalled other versions of Java keeping Newer version

    I had Java 7 and Java 8 in the system.

    I Uninstalled 7 and kept 8, in the path, I already had Java 8.

    It worked for me :)

    0 讨论(0)
  • 2020-12-04 13:16

    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

    0 讨论(0)
  • 2020-12-04 13:16

    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;
    
    0 讨论(0)
  • 2020-12-04 13:21

    You could define a java7 alias that would lead to the bin folder of your JDK7, and then change your environment variable so that it points JDK8. The default JDK would then be JDK8.

    0 讨论(0)
  • 2020-12-04 13:24

    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
    
    0 讨论(0)
  • 2020-12-04 13:27

    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.

    0 讨论(0)
提交回复
热议问题