正确安装Java 8和Java 7

我已经在我的Windows 7机器上安装了JDK 1.7,并安装了JDK 1.8 u20后,我有以下错误:

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. 

我的PATHvariables指向较旧的版本(即1.7)。

这里有什么错,我可以如何使用Java 8与Java 7?

问题是Java 8安装了许多你不需要的东西:

  • \ windows \ system32包含Java 8 java.exe,javaw.exejavaws.exe 。 你的path在开始的时候可能有system32 ,所以这些path往往默认运行。

  • 系统pathvariables以C:\ programdata \ Oracle \ Java \ javapath开头 。 该文件夹包含java.exejavaw.exejavaws.exe作为符号链接到JRE 8可执行文件。

我删除了system32文件,并从系统path中删除了C:\ programdata \ Oracle \ Java \ javapath 。 这似乎解决了这个问题。 我现在可以通过将JAVA_HOMEPATH指向适当的文件夹来切换版本。

看起来,甲骨文决定让它很难运行多个版本。 JRE是可以理解的,但是对于JDK来说这很疯狂,因为开发人员几乎总是需要Java的多个版本。

编辑:我觉得这个批处理脚本是有用的切换JDKs。 用法:jdk.bat 6 | 7 | 8。 您可能必须编辑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 

在开始菜单中input“regedit”打开registry编辑器

转到左侧registry资源pipe理器/树形菜单上的“HKEY_LOCAL_MACHINE”

点击“HKEY_LOCAL_MACHINE”registry中的“SOFTWARE”

点击“SOFTWARE”registry中的“JavaSoft”

点击“JavaSoft”registry列表中的“Java运行时环境”,在这里您可以看到已安装的Java的不同版本

点击“Java Runtime Environment” – 在右边你会得到4-5行。 请select“CurrentVersion”并右键单击(select修改选项)将版本更改为“1.7”

现在魔法已经完成了

你不能吃你的蛋糕,也吃不了。 :)当您将您的PATHvariables设置为JDK 1.8时,问题应该解决。 您可以在JDK 1.7中运行程序,方法是使用命令提示符中的set PATH手动设置PATH,或者可以转到JDK 1.7目录并从那里运行程序。 但是PATH中只能有一个JDK。

我有同样的问题,然后意识到我的程序用完了c:\Windows\SysWOW64 ,因此运行旧的java.exe 。 一旦我停止运行该目录(其中包含Java 7 exe ),问题就消失了,因为它正确地遵循了java8的path。

如果您不习惯手动删除Windows中的任何文件,只需将您的JAVA_HOMEpath放在Windows dirs的前面。

在Windows 7中定义JAVA_HOME环境variables,并将其用于Pathvariables第一个位置的variablesPATH中。

 JAVA_HOME -> D:\dev\Java\jdk1.8.0_45 Path -> %JAVA_HOME%\bin;%SystemRoot%\system32; 

您可以定义一个将导致JDK7的bin文件夹的java7别名,然后更改环境variables以指向JDK8。 那么默认的JDK将是JDK8。

感谢@Chris,对我来说,它只是从C:\Windows\System32删除文件而已。

当使用Sencha命令时,我遇到了这个问题,当然这与Sencha无关。 这是一个Java安装问题。

对于Java 1.6和1.7的用户来说,这个问题也是非常令人讨厌的,根据这个post: registry项“…”的值为“1.7”,但是需要“1.6”。 Java 1.7安装和registry指向它

在我的情况下,我卸载了其他版本的Java保持较新的版本

我有系统中的Java 7和Java 8。

我卸载7并保持8,在路上,我已经有了Java 8。

它为我工作:)

在处理多个JDK 在Windows 10上进行开发时,此问题令人讨厌(我无法使用此处所build议的操作系统path更改)。

作为一个部分的答案(因为这可能不是“妥善安装”),我使用Cygwin切换JAVA_HOME并运行安装了不同JDK(1.7,1.8)的Maven版本(通过Oracle安装程序)的做法相当不错。 所以如果你已经安装了Cygwin(或者可以安装和使用它)并且愿意使用JAVA_HOME envvariables(在下面这个例子中对Maven有用),你可以这样做(但是请注意链接的答案中的“技巧” 1并相应地调整你的本地path):

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

(mvn –version输出)

Apache Maven 3.3.9(bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17:41:47 + 01:00)Maven home:C:\ Work2 \ bin \ apache-maven-3.3.9-bin \ apache-maven-3.3.9 Java版本:1.8.0_74 ,供应商:Oracle Corporation Java home:C:\ Progra〜1 \ Java \ jdk1.8.0_74 \ jre默认语言环境:it_IT,平台编码:Cp1252操作系统名称:“windows 10”,版本:“10.0” ,arch:“amd64”,家族:“dos”

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

(mvn –version输出)

Apache Maven 3.3.9(bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17:41:47 + 01:00)Maven home:C:\ Work2 \ bin \ apache-maven-3.3.9-bin \ apache-maven-3.3.9 Java版本:1.7.0_79 ,供应商:Oracle公司Java家庭:C:\ Work2 \ bin \ Java \ jdk1.7.0_79_64bit \ jre默认语言环境:it_IT,平台编码:Cp1252操作系统名称:“windows 8.1”,版本:“6.3” ,arch:“amd64”,家族:“windows”

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

根据您自己的值编辑此文本,另存为“.reg”,执行,享受:)

 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.8.0_74] "JavaHome"="C:\\Program Files\\Java\\jre8"