-- Window上JDK(oracle,open jdk)的下载安装与Java环境变量的原理,配置及验证
【官网】:https://www.oracle.com/java/
应用场景
在学习,开发,运行java程序时,一般要确保环境变量正确.基础资源
无
使用须知
需要确定openjdk和jdk的区别: 1)openJDK 是对外开放源码的,Oracle JDK则没有(部分开源). 2)docker中默认的jdk都是openjdk. 3)Oracle JDK的构建过程基于OpenJDK,因此OpenJDK与Oracle JDK之间没有技术差异. 4)Oracle JDK关注企业级稳定性,OpenJdk 更新快速,版本发布快。
配置步骤
A)环境变量是干什么的?
操作系统级别的环境变量,可以被该系统中所有程序调用.
B)Cmd中和环境变量配置相关的基本命令.
Cmd下,命令如下:
Set ---查看所有变量
Set path ---查看指定变量
Set path=c:\win32----为变量赋值
Set path=%path%;新值; ----修改变量值
Set path= ------取消变量的定义
C.环境变量path和classpath的具体作用.
一般需要设置path, classpath (在运行一个类的时候,如果没有配置classpath 需要先进入到该类文件所在的路径,否则需配置,set classpath=类所在的文件夹路径). 概括的说就是:path这个环境变量确定了java这样的命令程序所在的目录,classpath 确定了java虚拟机寻找指定类所在java包的所在的目录. 总之: path是给操作系统去找java命令程序位置,而classpath是给java命令程序寻找第三方java包的.
D.环境变量设置的注意事项.
1) cd 你的目录,进入当前目录的根目录下,同时 set classpath=c:\aa\bb 和set classpath=c:\aa\bb;. (这里分号后面带个点,表示变量值还包含当前目录,这个很有用).
2 )set classpath=路径, 等号的左右两边都不能有空格,如果路径中本来就有空格,则应该将程序源文件移动到对classpath合法的路径下面。
3)classpath=后面的值不能有中文字符.
4)有时需要注销后重启才起作用,同时环境变量有系统级和用户级,环境变量最终的值可能为两者之和,可能是用户级中的设置
5)系统寻找可执行程序时,先在当前路径下寻找,找不到后再在 相关的环境变量中获得
6)系统调试编译中经常遇到的问题:调试,编译,发布所以来的jdk版本的不一致.一级环境变量的错误或者没有设置(通过java -verboss命令可以检查当前的java运行在的jdk版本).
7)多版本安装时,前一个版本失效: 新版自动将java.exe、javaw.exe、javaws.exe三个可执行文件复制到了C:WindowsSystem32目录,而该目录优先级高于JAVA_HOME设置的环境变量.
E.设置过程示例.
e1)设置完的示例.
---------------JAVA_HOME
D:\Program Files\Java\jdk1.8.0_51
---------------ClassPath (需要包含下列项,但不要重复)
.;%Java_Home%\bin;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar
---------------Path
%Java_Home%\bin;%Java_Home%\jre\bin;
e2)设置过程.
step1)下载JDK.
Oracle JDK: https://www.oracle.com/technetwork/java/javase/downloads/index.html
OpenJDK: http://jdk.java.net/archive
下载完了之后,安装即可,请记住: jdk安装目录不能放到一个有空格或者有中文的目录中!
step2)进入环境变量配置界面.
点击 我的电脑 ——> 右键 ——> 选择属性 ,跳出如下图所示(windows 10系统),点击“高级系统设置”。
或者 控制面板——>系统和安全——>系统 也可以找到“高级系统设置”。
step3)设置环境变量.
1)“新建”,随后跳出 “新建系统变量” 对话框,一般来说系统变量中是没有JAVA_HOME的,所以我们在弹出的“新建系统变量”对话框中的“变量名”填入 :JAVA_HOME ,“变量值 ”填入 :C:\Program Files\Java\jdk-12.0.1(安装Java时jdk 所在的文件夹, 默认安装都是在C盘的)。
如果已经存在JAVA_HOME的,那么就在它的变量值的最后面加上分号(即;),然后再将 jdk 的路径添加在这个分号的后面。
注意:JAVA_HOME的变量值一定要进入到 jdk 所在的目录,然后再复制这个路径放进去。
2)新建变量名:CLASSPATH,变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (注意前面的 .; 也要放进去)如下图:
注意:如果已经存在CLASSPATH,则在它的最前面或者最后面添加变量值,如果在最前面添加,应该先添加一个分号(即;),然后再在分号前面添加 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar ( .; 也要放进去);
如果在最后面添加,应该先添加一个分号(即;),然后再在分号后面添加:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar ( .; 也要放进去)。
3)打开Path,点击新建按钮,添加变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin(注意:从分号分开作为两行)。
注意: 在window 10系统中,配置JDK环境变量时,如果不将 Path 的 变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 进行如下图这样配置,不分开两行,则会出错。但是如果你的系统是window 7的话,则可以不分开.
4)点击确定,完成配置.
step4)验证是否安装成功.
验证java: cmd中输入java.
验证javac: cmd中实现javac
常见问题
-
classloader找不到当前目录的class文件
【解决方案】设置classpath时还要设置一个. ,其中.代表当前目录.示例:.;%Java_Home%in; -
环境变量中classpath不生效
【解决方案】lasspath=路径, 等号的左右两边都不能有空格. 另外值中不能有中文 -
为什么安装多个版本jdk后原先jdk版本失效了
【解决方案】新版自动将java.exe、javaw.exe、javaws.exe三个可执行文件复制到了C:WindowsSystem32目录,而该目录优先级高于JAVA_HOME设置的环境变量 -
配置在【高级系统设置】中配置了系统的环境变量,但cmd中java依然识别不了
【解决方案】因为是【系统变量】,因此要么你右键用管理员权限运行cmd(同理右键运行目标jar程序),要么添加环境变量时同时添加【用户变量】 -
Error: A JNI error has occurred, please check your installation and try again
【解决方案】java与javac版本不一致(java -version和javac - version),卸载移除原有的java版本
快速入门
无