第2章 搜索class文件

Java虚拟机规范并没有规定虚拟机应该从哪里寻找类,因此不同的虚拟机实现可以采用不同的方法。对于从哪里加载class文件,给了足够多的自由,可以从文件系统读取和从JAR(或ZIP)压缩包中提取class文件。除此之外,也可以通过网络下载、从数据库加载,甚至是在运行中直接生成class文件,构成class文件的基本数据单位是字节

Oracle的Java虚拟机实现根据类路径(class path)来搜索类。按照搜索的先后顺序,类路径可以分为以下3个部分:

  • 启动类路径(bootstrap classpath)

默认对应jre\lib目录,Java标准库(大部分在rt.jar里)位于该路径。可以通过-Xbootclasspath选项修改启动类路径,不过通常并不需要这样做
会按jre\lib\*找下面所有jar包

  • 扩展类路径(extension classpath)

默认对应jre\lib\ext目录,使用Java扩展机制的类位于这个路径。
会按jre\lib\ext*找下面所有jar包

-Xjre指定jre目录,如果没指定,就当前目录的jre文件夹,再没有就环境变量JAVA_HOME下的jre目录
-Xjre "D:\Java\jdk1.7.0_15\jre" java.io.File测试

  • 用户类路径(user classpath)

默认值是当前目录,也就是“.”我们自己实现的类,以及第三方类库。可以设置CLASSPATH环境变量来修改用户类路径,但是这样做不够灵活,所以不推荐使用。更好的办法是给java命令传递-classpath(或简写为-cp)选项。-classpath/-cp选项的优先级更高,可以覆盖CLASSPATH环境变量设置。
-classpath/-cp选项既可以指定目录,也可以指定JAR文件或者ZIP文件

java -cp path\to\classes ... //指定目录的 直接把类全名.换/ 找下面的.class文件
java -cp path\to\lib1.jar ...//遍历下面每个class
java -cp path\to\lib2.zip ...//遍历下面每个class
java -cp classes\lib\* ...  //*通配符  匹配目录下全部jar包

还可以同时指定多个,用分隔符;分开即可。

测指 指定jre目录
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 精心收集整理的教程笔记 第01天 Java基础入门 第1章计算机基础 1.1计算机 计算机(computer)俗称...
    Java帮帮阅读 6,023评论 1 109
  • 从电影的片名就可以看出来,这部选择在七夕节公映的电影又是一部以“爱”为主题的电影。其实无论是否是七夕如此应景的节日...
    良心娱乐阅读 588评论 2 2
  • 身边有一位姑娘, 她来自遥远的祖国东北, 因为老公工作变动,来到这座南方的小城。 有时我觉得她十分奢侈,买很多护肤...
    鱼落阅读 249评论 1 1
  • 有时候我们有这样的需求,登录后从服务器获取到了token,但是如何判断token是否过期,如果过期了就提示用户重新...
    面皮大师阅读 2,879评论 1 2