java 定义classpath_Java中的Classpath

最近看叶老师写的一本基于java的数据结构,提到了几个问题,原来的理解不够全面,来补充一下。

今天就来说一下我们常提到但是却不知道是啥的Classpath:

Classpath是JVM用到的一个环境变量,它用来指示JVM如何搜索class

因为Java是编译型语言,源码文件是.java,而编译后的.class文件才是真正可以被JVM执行的字节码。因此,JVM需要知道,如果要加载一个a.b.c.Hello的类,应该去哪搜索对应的Hello.class文件。

所以,classpath就是一组目录的集合,它设置的搜索路径与操作系统相关。例如,在Windows系统上,用;分隔,带空格的目录用""括起来,可能长这样:

C:\work\project\bin;C:\shared;"D:\data\project1\bin"

现在我们假设classpath是.;C:\work\project1\bin;C:\data,当JVM在加载abc.xyz.Hello这个类时,会依次查找:\a\b\c\Hello.class

C:\work\project\bin\a\b\c\Hello.class

C:\data\a\b\c\Hello.class

classpath的设定方法有两种:

在系统环境变量中设置classpath环境变量,不推荐;

在启动JVM时设置classpath变量,推荐。

我们强烈不推荐在系统环境变量中设置classpath,那样会污染整个系统环境。在启动JVM时设置classpath才是推荐的做法。实际上就是给java命令传入-classpath或-cp参数:

java -classpath .;C:\work\project\bin;C:\shared a.b.c.Hello

没有设置系统环境变量,也没有传入-cp参数,那么JVM默认的classpath为.,即当前目录


版权声明:本文为weixin_30480281原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。