安装jdk 8和jdk 10之后,jdk版本10被配置为系统JDK。即使我将JAVA_HOME,PATH更改为jdk 8,系统jdk也不会更改。在更改路径和JAVA_HOME之后,如果我在命令提示符下检查java的版本,它会显示jdk 8.但如果我双击一个可执行的jar文件,则需要系统jdk,即jdk 10.
我尝试更改注册表以编辑系统jdk路径和版本,但它不起作用。
从configure java我只能看到jdk 10配置为系统jdk且不可编辑。
如果您能够将jdk版本切换为系统jdk,请提供帮助。
复制问题的步骤:
注意:这不是重复的帖子。有关jdk6或7或8之间切换的帖子,但没有jdk 10. JDK 10也没有来自oracle的zip发行版,它只是作为可安装文件。
答案 0 :(得分:1)
官方没有任何"系统jdk"。双击文件时,它是确定用于打开该文件的程序的文件关联。如何定义文件关联取决于您的操作系统。例如,在Windows上,存在两个存储文件关联的位置。第一个是在HKLM\Classes
下的注册表中,由命令行使用,但这可以由Windows资源管理器特定的关联覆盖。每次切换JDK时,可能都不值得为.jar文件更改文件关联的麻烦。相反,只需转到命令行并键入java -jar myapp.jar
即可。然后,它将采用您在java
上定义的任何PATH
版本。
答案 1 :(得分:0)
通常,您的PATH已包含对%JAVA_HOME%\bin
的引用(例如在Windows上),因此再次添加/添加到路径将不起作用。您可以通过删除现有引用来修复PATH,或者 prepend 新设置。
在Windows上:
C:\>set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_1.41
C:\>set PATH=%JAVA_HOME%\bin;%PATH%
现在,之前的引用仍然在路径上,但在之后的新引用,因此它将被忽略。
答案 2 :(得分:0)
根据您所使用的平台,通常会有一个指向目录的PATH环境。无论先在哪里,都会被使用。所以在例如linux,它会接收安装在/ usr / bin中的任何java可执行文件以及它们指向的任何jvm。
您可以使用绝对路径绕过它。很多用于java的命令行软件仍然依赖于JAVA_HOME来确定jvm的位置(例如gradle),所以你也可以使用它。
最后,在linux和osx上,您可以使用例如jenv控制使用哪个jvm。您还可以通过插件管理JAVA_HOME(默认情况下已关闭)。
这就是我在Mac上的.bash_profile中的内容。类似的东西也适用于linux和windows。
# brew install jenv, install some jdks and make sure jenv knows where they are, and run this once to get jenv to export JAVA_HOME:
# jenv enable-plugin export
export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
答案 3 :(得分:0)
我来晚了,但是我可以解决这个问题。您不需要卸载任何JDK。 将所有JDK安装在C:\ Program Files \ Java中。
通过代码创建bat文件并以管理员身份运行。它将要求您选择JDK编号,选择您的JDK并按Enter。您只需要重新启动使用JDK的应用即可。
@echo off
echo "Current Java Version is"
echo %JAVA_HOME%
setlocal enableDelayedExpansion
SET PT="C:\Program Files\Java"
cd %PT%
::build "array" of folders
set folderCnt=0
for /f "eol=: delims=" %%F in ('dir /b /ad *') do (
set /a folderCnt+=1
set "folder!folderCnt!=%%F"
)
::print menu
for /l %%N in (1 1 %folderCnt%) do echo %%N - !folder%%N!
echo(
:get selection
set selection=
set /p "selection=Enter number to Set the JAVA_HOME and PATH "
echo you picked %selection% - !folder%selection%!
cd %PT%\!folder%selection%!
echo %cd%
( endlocal & rem return
Set jdk=%cd%
)
echo Setting JAVA_HOME
SETX /M JAVA_HOME "%jdk%"
SET JAVA_HOME=%jdk%
echo JAVA_HOME %JAVA_HOME%
SET JAVA_BIN="%%JAVA_HOME%%\bin"
echo PATH %JAVA_BIN%
SETX PATH /M "%JAVA_BIN%;%PATH%"
echo Java Version Changed
pause