目录

1.Java文件运行过程的执行原理

2.JAVA_HOME

3.classpath


回顾:到目前为止,学了配置环境变量path,并且这个环境变量path和java实际上没关系,是windows操作系统的机制。

1.Java文件运行过程的执行原理

以HelloWorld.java

HelloWorld.class为例

运行E:\Java学习\JavaProjects\JavaSE>java HelloWorld

第一步:会先启动JVM(java虚拟机)

第二步:JVM启动之后,JVM会去启动“类加载器classloader”。类加载器的作用:加载类的。本质上类加载器负责去硬盘上找“类”对应的“字节码”文件。假设是“java HelloWorld”,那么类加载器会去硬盘上搜索:HelloWorld.class文件。假设是“java First”,那么类加载器会去硬盘上搜索:First.class文件。

第三步:类加载器如果在硬盘上找不到对应的字节码文件,会报错。错误: 找不到或无法加载主类。
类加载器如果在硬盘上找到了对应的字节码文件,类加载器会将该字节码文件装载到JVM当中,JVM启动“解释器”将字节码解释为“101010000...”这种二进制码,操作系统执行二进制码和硬件交互。

2.JAVA_HOME

对于Java的JDK所属的环境变量,有一个叫做:JAVA_HOME。这个JAVA_HOME目前我们不需要,不配置这个环境变量也不会影响当前java程序的运行。但是后期学习到JavaWEB的时候需要安装Tomcat服务器,那个时候JAVA_HOME就必须配置了。

默认情况下,类加载器去硬盘上找“字节码”文件的时候,类加载器(classloader)会从当前路径下找。

问:能不能给类加载器指定一个路径,让类加载器去指定的路径下加载字节码文件?

答:可以的。可以设置一个环境变量,叫做:classpath。它是给“类加载器”指路的。classpath环境变量不属于windows操作系统,classpath环境变量隶属于java。

3.classpath

作用:给类加载器指路。

在没有配置环境变量classpath的时候,默认从当前路径下加载。

如果配置了环境变量classpath的话,就只能从指定的路径下加载了。

如何配置:classpath环境变Windows里没有,需要新建:计算机-->右键-->属性-->高级系统设置-->环境变量-->新建,大小写随意。

存在问题:但是,配置完环境变量后,类加载器就只能从classpath的配置路径去寻找文件,不再从当前路径下找了。

以E:\Java学习\JavaProjects\JavaSE\ HelloWorld.class文件路径为例:
配置classpath=E:\Java学习
运行 E:\Java学习\JavaProjects\JavaSE>java HelloWorld
报错: 找不到或无法加载主类

解决办法参考:Java入门学习笔记4——运行报错及解决方法


所以学习前期,在用不到classpath的情况下,不必要配置这个环境变量。