path环境变量
当我们用文本编辑器写好了Java代码并保存为.java文件后,用dos命令窗口的javac xxx.java命令去编译文件时,会出现’javac’不是内部或外部命令,也不是可运行的程序或批处理文件。
这说明:windows操作系统没有发现“javac.exe”命令在哪里,没有找到javac.exe文件在哪。
为什么ipconfig… ping等命令可以使用呢?为什么javac用不了?
我们发现windows操作系统中有这样一一个环境变量path,它的值为:
C:\Program Files\Microsoft MPI\Bin;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\dotnet;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0;%SYSTEMROOT%\System32\OpenSSH;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn;C:\Program Files\Microsoft SQL Server\150\Tools\Binn;C:\Program Files\Microsoft SQL Server\150\DTS\Binn;C:\Users\Taylor George\AppData\Local\Google\Chrome\Application\chromedriver;C:\Users\Taylor George\AppData\Local\Programs\Python\Python37;D:\mysql\bin;
我们可以发现在C:\windows\System32这个目录下存在:ipconfig.exe
配置环境变量path的步骤:
文件资源管理器–>此电脑–>属性–>高级系统设置–>环境变量–>找到path,将javac所在路径添加进去(用英文分号分隔)。
path环境变量属于windows操作系统,不隶属于Java
注意:环境变量包括“系统变量”和“用户变量”
系统变量:范围比较大,系统变量会让计算机所有用户都起作用。
用户变量:范围比较小,这个变量只是作用于当前用户。
classpath环境变量
首先,我们来看一看:“java HelloWorld”的执行过程以及原理:
第一步:会先启动JVM(java虚拟机)
第二步: JVM启动之 后,JM会去启动"类加载器classloader"
类加载器的作用:加载类的。本质.上类加载器负贲去硬盘_上找类"对应的字节码"文件假设是"java HelloWorld",那么类加载器会去硬盘上搜索: HelloWorld. class文件。
假设是"java Test", 那么类加载器会去硬盘_上搜索: Test.class文件 。
第三步:
类加载器如果在硬盘_上找不到对应的字节码文件,会报错,报什么错?
错误:找不到或无法加载主类
类加载器如果在硬盘.上找到了对应的字节码文件,类加载器会将该字节码
文件装载到JVM当中,JVM启动"解释器"将字节码解释为"101010000…"这种
二进制码,操作系统执行二进制码和硬件交互。
那么问题来了,默认情况下类加载器去哪里寻找“字节码文件”?默认情况下类加载器会在当前目录下寻找“字节码文件”。
那么能不能给类加载器制定一个路径,让类加载器去指定的路径下加载字节码文件。
答案:可以的。但是需要设置一个环境变量,叫做:classpath。
classpath环境变量不是于Windows操作系统,classpath环境变量隶属于Java
classpath环境变量是Java特有的。
classpath配置过程:
文件资源管理器–>此电脑–>属性–>高级系统设置–>环境变量–>新建classpath(不能改动,大小写随意),编辑想要的配置的路径。
配置完成记得重启cmd。
classpath的一个重要特点:配置了以后,类加载器只会去该配置路径下寻找“字节码文件”, 不在从当前路径下寻找。