序
对于习惯使用windows的同学来说,早已对一键安装产生了依赖,可是在安装java时却需要配置多个环境变量,按照网上的教程总容易出错,运行java和javac时总容易出错,网上的教程也只是一步一步的教你按部就班,版本不一制总容易出错,被弄的心烦气乱,今天我就带大家通过java的配置来理解下环境变量的含义
Java各环境变量的含义
各同学自行打开自己系统的环境变量设置界面,由于每个系统的环境变量打开方式都不相同,笔者不再重复,以下所有变量可在系统和用户变量之间随意选择,由于每个人安装目录不同,请将后文中"你的jdk/jre安装录"连同双引号在内,统一替换成自己的安装目录
1.JAVA_HOME:
这是网上通用教程的第一个变量配置,那么为什么要配置这个环境变量呢?首先如果你只是编译Java程序,那么这个变量可有可无,这个变量的作用是帮助需要Java支持的应用找到Java的目录
感兴趣的可以配置:
在系统变量添加 JAVA_HOME= “你的jdk安装目录”
2.CLASSPATH:
变量名翻译过来就是class路径,其实作用也就是这样,通常我们在写java程序的时候会直接使用一些系统已有的函数比如System.out.Print(),那么我们在哪里加载这些系统函数呢?有同学觉得这应该是Ide编辑器自己会帮助我们自动加载,其实不是这些包会在编译的时候才会加载,那编辑器在哪去找这些变量呢?
编辑器会向系统询问“我要编译java程序了,我需要java的类包,请给我这些类包”,系统:“我给你CLASSPATH,所有编译的包都在这些目录里,你自己去找吧”
听到这里大家就知道了,原来CLASSPATH是放置所有类包的目录啊
那么我们开始配置classpath变量
如果有CLASSPATH变量那我们直接就在原有的CLASSPATH变量后添加,不可删除原有变量,不然就会有程序或者编译器抱怨自己需要加载的类包找不到了
所有的java类包java供应商统一给我们放在了java安装目录下的lib文件夹下,lib是library的缩写,连着java的目录,就可以一下就明白了java的图书馆那一定是存放类包的地方
正式开始添加:.;"你电脑的jdk安装目录"/lib/ *;"你电脑的jre安装目录"/lib/ *;
多个路径时我们将以分号分割各个路径
- .; :. 代表当前路径,有时我们不仅仅以来系统提供给我们的类包,我们需要编写自己的类包,通常类包都放在当前目录下,这个就高速编译器,你先从我所在的目录开始找起
- 后面两个是java给我们的类包的路径,笔者在lib/后面添加了*代表这个目录下的所有文件,由于不清楚到底需要哪些java类包就索性全部添加
ps:如果你有一天发现一个超级不错的java类包,将其路径添加入CLASSPATH就可以愉快的编译了呢
3.Path:
path:翻译过来就是路径,路径那么多,那他究竟代表哪一个呢?path其实存放的是可执行文件路径也就是应用程序路径。什么?应用也有自己的路径吗?其实是的,应用程序其实是二进制可执行文件,当你打开一个应用程序时,除非你打开的是连接二进制执行文件的快捷方式,否者系统是找不到这些二进制文件的,path变量就是告诉系统,”傻瓜,你将可执行文件放在path变量下的这些路径了,快去找吧"
在我们编译java时我们需要java的编译器来编译我们的java文件,当我们运行java文件时又需要java虚拟机来运行java文件,我们需要将这些应用程序路径添加进path,然后告诉系统,你就这个目录下寻找java编译器,和java虚拟机吧
我们开始配置Path变量:
找到Path变量,添加: “你的jdk安装目录”/bin/;"你的jre安装目录"/bin/; ,切记不可以删除原有的Path变量,不然造成一些应用程序仍在电脑上,可系统却找不到他们
总结:
环境变量其实和我们编程自己创建的变量很像,不过这些变量是帮助系统工作,有的是告诉系统应用程序的路径,有的是告诉系统包的路径,这些路径被存储在一些文件中,系统每次开机从这些文件中读取变量,帮助他正常的工作,系统变量和用户变量的区别在于,系统变量是所有用户都需要加载的,用户登陆后先读取系统变量,在读取用户变量,而用户变量,只对当前用户有效,比如我用admin的身份登陆电脑,那我就会加载admin的变量,这些变量别的用户也不可以访问和加载
注:本人非java程序员,我对c++,go,linux比较感兴趣,如果文中有错的地方欢迎指正
网友评论