Installer correctement java 8 avec java 7


J'ai JDK 1.7 installé sur ma machine Windows 7 et après avoir installé JDK 1.8 u20, j'ai l'erreur suivante:

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.

Ma variable PATH pointe vers l'ancienne version (c'est-à-dire 1.7).

Qu'est-ce qui ne va pas ici et comment je pourrais utiliser java 8 avec java 7?

Author: bachr, 2014-10-12

10 answers

Le problème est que Java 8 installe beaucoup de choses dont vous n'avez pas vraiment besoin:

  • \windows\system32 contient Java 8 java.exe, javaw dans.exe et javaws.exe. Votre chemin a probablement system32 près du début, donc ceux-ci ont tendance à être exécutés par défaut.

  • Le système variable de chemin d'accès commence par C:\programdata\Oracle\Java\javapath. Ce dossier contient java.exe, javaw dans.exe et javaws.exe en tant que liens symboliques vers les exécutables JRE 8.

J'ai supprimé les fichiers system32et supprimé C:\programdata\Oracle\Java\javapath depuis le chemin du système. Cela semble guérir le problème. Je peux maintenant changer de version en pointant JAVA_HOMEet PATH vers les dossiers appropriés.

Oracle, semble-t-il, est déterminé à rendre difficile l'exécution de plusieurs versions. C'est compréhensible avec le JRE, mais c'est fou avec JDKs, comme les développeurs ont presque toujours besoin de plusieurs versions de Java.

EDIT: Je trouve que ce script batch est utile pour changer de JDK. Utilisation: le jdk.chauve-souris 6/7/8. Vous devrez peut-être modifier l'emplacement d'installation de 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
 68
Author: Chris, 2016-07-15 11:58:09

Dans le menu DÉMARRER, tapez "regedit" pour ouvrir l'éditeur de registre

Allez dans "HKEY_LOCAL_MACHINE" dans le menu explorateur de registre/arborescence de gauche

Cliquez sur "LOGICIEL" dans les registres" HKEY_LOCAL_MACHINE "

Cliquez sur " JavaSoft "dans les registres" LOGICIELS "

Cliquez sur "Java Runtime Environment" dans la liste des registres" JavaSoft" ici vous pouvez voir différentes versions de java installé

Cliquez sur "Java Runtime Environment"- Sur le côté droit vous obtiendra 4-5 lignes . Veuillez sélectionner "CurrentVersion" et faites un clic droit( sélectionnez l'option modifier) Changer la version à "1.7"

Maintenant la magie est terminée

 13
Author: satender, 2015-05-11 15:35:45

Vous ne pouvez pas avoir votre gâteau et le manger aussi. :) Lorsque vous définissez votre variable PATH sur JDK 1.8, le problème devrait être résolu. Vous pouvez exécuter vos programmes dans JDK 1.7 en définissant PATH manuellement en utilisant set PATH à partir de l'invite de commande ou vous pouvez accéder au répertoire JDK 1.7 et exécuter votre programme à partir de là. Mais il ne peut y avoir qu'un seul JDK sur votre CHEMIN.

 3
Author: RehanZahoor, 2014-10-12 11:12:23

J'ai eu le même problème puis j'ai réalisé que mon programme était à court de c:\Windows\SysWOW64 et donc en cours d'exécution de l'ancien java.exe. Une fois que j'ai cessé de manquer de ce répertoire (qui contient le Java 7 exe), le problème a disparu car il a suivi correctement le chemin vers java8.

 3
Author: Mycroft_IV, 2014-12-03 20:29:46

Si vous n'êtes pas à l'aise pour supprimer manuellement des fichiers dans Windows, placez simplement votre chemin JAVA_HOME à l'avant des répertoires Windows.

Définissez la variable d'environnement JAVA_HOME dans Windows 7 et utilisez-la dans le CHEMIN de la variable à la première position de la variable de chemin.

JAVA_HOME -> D:\dev\Java\jdk1.8.0_45
Path -> %JAVA_HOME%\bin;%SystemRoot%\system32;
 2
Author: Krzysztof Ziomek, 2015-05-26 20:04:08

Vous pouvez définir un alias java7 qui conduirait au dossier bin de votre JDK7, puis changer votre variable d'environnement pour qu'elle pointe JDK8. Le JDK par défaut serait alors JDK8.

 1
Author: Dici, 2014-10-12 11:12:47

Merci @Chris, pour moi, il a été résolu en supprimant simplement les fichiers de C:\Windows\System32.

J'ai eu ce problème lors de l'utilisation de la commande Sencha, mais bien sûr, cela n'a rien à voir avec Sencha. C'est une installation de Java problème.

Apparemment, ce problème était également très ennuyeux pour les personnes avec Java 1.6 et 1.7 selon ce post: Clé de registre '..."a la valeur "1.7", mais " 1.6 " est nécessaire. Java 1.7 est installé et le registre pointe vers lui

 1
Author: Alex MM, 2017-05-23 11:54:51

Dans mon cas, j'ai désinstallé d'autres versions de Java en gardant la version plus récente

J'avais Java 7 et Java 8 dans le système.

J'ai désinstallé 7 et gardé 8, dans le chemin, j'avais déjà Java 8.

Cela a fonctionné pour moi:)

 1
Author: Punith Kumar, 2016-07-19 13:04:24

Ce problème est ennuyeux lorsqu'il s'agit de plusieurs JDK pour développer sur Windows 10 (je n'ai pas pu utiliser le changement de chemin du système d'exploitation comme suggéré ici).

En tant que réponse partielle (car cela pourrait ne pas être conçu comme "correctement" installé), je me débrouille assez bien en utilisant Cygwin pour basculer JAVA_HOME et exécuter des builds Maven avec différents JDK (1.7, 1.8) installés (via les installateurs Oracle). Donc, si vous avez installé Cygwin (ou peut l'installer et l'utiliser) et prêt à utiliser JAVA_HOME env variable (utile avec Maven comme dans cet exemple ci-dessous) vous pouvez faire comme ceci (MAIS soyez conscient de la "astuce" dans la réponse au lien 1 et ajustez vos chemins locaux en conséquence):

export JAVA_HOME=/cygdrive/c/Progra~1/Java/jdk1.8.0_74

(sortie mvn version version)

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17: 41:47+01: 00) Maven accueil: C:\Work2\bin\apache-maven-3.3.9-bin\apache-maven-3.3.9 Version Java: 1.8.0_74 , fournisseur: Oracle Corporation Java accueil: C:\Progra~1\Java \ jdk1.8. 0_74 \ jre Paramètres régionaux par défaut: it_IT, platform encodage: Cp1252 Nom du système d'exploitation: "Windows 10", version: "10.0", arch: "amd64", de la famille: "dos"

export JAVA_HOME=/cygdrive/c/Work2/bin/Java/jdk1.7.0_79_64bit/

(sortie mvn version version)

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17: 41:47+01: 00) Maven accueil: C:\Work2\bin\apache-maven-3.3.9-bin\apache-maven-3.3.9 Version Java: 1.7.0_79 , fournisseur: Oracle Corporation Java accueil: C:\Work2\bin\Java\jdk1.7.0_79_64bit\jre Paramètres régionaux par défaut: it_IT, encodage de plate-forme: Cp1252 Nom du système d'exploitation: "Windows 8.1", version: "6.3", arc: "amd64", de la famille: "windows"

Https://stackoverflow.com/questions/14567191/export-java-home-with-spaces-in-cygwin

 0
Author: Diego1974, 2017-05-23 10:31:35

Modifier ce texte dans la base de vos propres valeurs, enregistrer sous ".reg", exécuter, profiter:)

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.8.0_74]
"JavaHome"="C:\\Program Files\\Java\\jre8"
 0
Author: tito76, 2017-07-19 07:08:20