美文网首页
9-CLASSPATH环境属性

9-CLASSPATH环境属性

作者: c88bc9f9d088 | 来源:发表于2020-09-22 16:15 被阅读0次

        CLASSPATH如果要完整的进行解释需要好多的知识,所以本次只是对CLASSPATH的概念做一个先期的介绍。例如,现在假设在d:\mldnjava目录下提供有一个Hello.class的字节码文件。
        假设说当前用户所在的目录为“d:\mldnjava”,那么在这样的情况下可以直接使用java命令进行Hello.class字节码文件的解释。但是如果说现在脱离了这个目录,将当前目录修改为了“C:\”(C盘目录下并没有Hello.class字节码文件),如果再次执行程序解释,这个时候会出现如下的错误提示信息:

    错误: 找不到或无法加载主类 Hello

    原因: java.lang.ClassNotFoundException: Hello

        因为当前目录中没有字节码,那么现在的需求就是:可以在不同的目录中都执行d:\mldnjava\Hello.class文件。所以在这样的处理要求下就只能够依靠CLASSPATH环境变量属性来完成。
    范例:定义CLASSPATH环境属性

    SET CLASSPATH=d:\mldnjava

        当设置了CLASSPATH之后,这个时候在Java程序解释的时候会自动的通过CLASSPATH所设置的路径进行类的加载,所以可以得出一个结论:JVM解释程序的时候需要得到CLASSPATH的支持。
        但是有一个问题,发现默认情况下所有解释的类都是从当前所在的目录中加载的,所以可以得出一个结论:CLASSPATH的默认设置为当前所在目录加载类文件。很明显如果到出去设置CLASSPATH就会造成整个系统操作的混乱,那么从正常的角度来讲,对于CLASSPATH还是应该采用默认设置方式,所以如果这个时候要想只通过当前目录加载,则可以将CLASSPATH设置为“.”。
    范例:从当前所在路径加载类

    SET CLASSPATH=.

        在一些时候如果你安装了一些与Java开发的程序软件的时候,它有可能会自动的修改默认的CLASSPATH,也就是说这个“.”的配置会消失。这种情况下就必须利用命令自己重新设置回来。
        但是需要注意的是,现在的CLASSPATH是在一个命令行下的配置,如果该命令行关闭了,那么相关的属性配置也将消失,所以最好的做法是将其定义为全局属性,则可以直接在系统中追加有一个属性信息。

    9.1.png

    面试题:请问PATH和CLASSPATH的区别?
        PATH:是操作系统提供的路径配置,定义所有可执行程序的路径;
        CLASSPATH:是有JRE提供的,用于定义Java程序解释时类加载路径,默认设置的为当前所在目录加载,可以通过“SET CLASSPATH=路径”的命令形式来进行定义;
        关系:JVM → CLASSPATH定义的路径 → 加载字节码文件。

    学习笔记持续更新......

    相关文章

      网友评论

          本文标题:9-CLASSPATH环境属性

          本文链接:https://www.haomeiwen.com/subject/bxiwyktx.html