【笔记】Java的路径机制(CLASSPATH)

      回顾第一课中最简单的程序HelloWorld.java,咱们首先在cmd命令行中进入HelloWorld.java所在的目录,接着使用javac将HelloWorld.java转换成HelloWorld.class,而后再使用java运行HelloWorld.class获得程序的结果。这个过程当中发生了什么?
      在这个过程当中,JAVA的编译系统首先须要找到javac.exe、java.exe,是javac.exe将HelloWorld.java转换成HelloWorld.classjava.exe运行HelloWorld.class,而这两个exe文件在java的安装目录下。 java

      在寻找这两个文件时,JAVA的编译系统首先在HelloWorld.java的目录中寻找,若未找到,则去环境变量记录的路径中寻找,在安装java时咱们配置了环境变量,因为设置了环境变量C:\Program Files\Java\jdk1.8.0_201\bin,因此能够在HelloWorld.java的路径里中调用javac.exe和java.exe。
那么JVM系统是怎么寻找.class文件的呢?
      当在命令行输入java HelloWorld,java编译系统在找到了java.exe后,接着开始寻找HelloWorld.class文件,首先在当前目录下寻找,若未找到则去CLASSPATH所记录的路径下寻找HelloWorld.class文件,若仍为找到,则提示“找不到或没法加载主类”

Java 解释器运行CLASSPATH路径中.class文件的工做程序

  • 首先,它找到环境变量CLASSPATH
          将Java 或者具备 Java 解释能力的工具(如浏览器)安装到机器(如PC机)中时,经过操做系统设定的CLASSPATH。
          CLASSPATH包含了一个或多个目录,它们做为一种特殊的“根”使用,从这里展开对.class文件的搜索。
          从那个根开始,解释器会寻找包名,并将每一个点号(句点)替换成一个斜杠,从而生成从CLASSPATH根开始的一个路径名(因此package foo.bar.baz 会变成foo\bar\baz或者foo/bar/baz;具体是正斜杠仍是反斜杠由操做系统决定)。浏览器

  • 随后将它们链接到一块儿,成为CLASSPATH内的各个条目(入口)。
           之后搜索.class文件时,就可从这些地方开始查找与准备建立的类名对应的名字。此外,它也会搜索一些标准目录——这些目录与 Java 解释器驻留的地方有关。工具

特殊的地方

      使用 JAR文件时要注意一个问题,必须将JAR文件的名字置于类路径里,而不单单是它所在的路径。
      因此对一个名为tonls.jar 的 JAR文件来讲,咱们的类路径须要包括jar文件,以下为我本身的CLASSPATH,tools.jar和dt.jar的jar文件也包含在CLASSPATH中,而C:\Users\engineer\Desktop\JavaLearning只包含到文件夹:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;C:\Users\engineer\Desktop\JavaLearning;操作系统

理解了java编译系统寻找文件的机制,便可轻松理解package和import的设计,下节课介绍package和import命令行

相关文章
相关标签/搜索