zoukankan      html  css  js  c++  java
  • 关于classpath

    刚学Java那会儿,配置Java开发环境,网上查找的教程都会教你如何配置JAVA_HOME以及CLASSPATH环境变量。

    然而,CLASSPATH其实是无需配置的。

    Java程序使用到的类文件可以分为三类:

    • 启动类(Bootstrap classes):组成Java平台的类,包括rt.jar以及其他一些重要jar文件;
    • 扩展类(Extension classes):${JAVA_HOME}/jre/lib/ext下面的jar包;
    • 用户类(User classes):开发者自己编写的类。

    对应这三类class文件,Java中有三种类加载器:

    • 启动类加载器
    • 扩展类加载器
    • 应用程序类加载器

    一般而言,对于启动类和扩展类我们无需做任何配置,JVM会自动地找到这些类。

    当然,对于启动类,也可以使用java -Xbootclasspath:<path>来自行自定加载的路径,不过我们几乎不会这样做。

    对于用户自定义的类:

    • 如果不做任何配置,默认会从.路径,也就是当前路径下查找;
    • 如果使用形如java -classpath "a/b/lib;c/xx.jar"的参数,则会从指定的路径或jar包下查找,注意会覆盖掉.路径;
    • 当然,如果设置了CLASSPATH也会从其设定值对应路径下查找。

    使用CLASSPATH来设置用户类的查找路径是不推荐的做法,因为这会污染系统环境变量,不同的Java程序查找到相同的用户类,而通常不同程序定义的类应该相互隔离。

    最后,如果想要查看当前Java程序所使用的到的类路径,可以命令行输入jinfo <pid>,找到java.class.path对应的项;

    sun.boot.class.path则会列出启动类路径。

    下面是一个查看示例:

    -------------------------------------
    吾生也有涯,而知也无涯。
  • 相关阅读:
    附加数据库 对于 服务器“00-PC”失败
    SQL 语句转换格式函数Cast、Convert
    sql语句:union
    ISNULL-sqlserver语句
    SQL中的CASE WHEN语句
    SQL SELECT INTO 语句
    Sql语句中IN等方面的用法
    combobox的不常用的方法和将txt文本内容加到textbox中显示
    程序员:“菜鸟”和“大神”差距在哪
    过劳死离我们有多远?
  • 原文地址:https://www.cnblogs.com/SanjiApollo/p/12836423.html
Copyright © 2011-2022 走看看