classpath、jar、模块

classpath

  1. classpath是JVM用到的一个环境变量,它用来指示JVM如何搜索class。
  2. JVM不依赖classpath加载核心库!(classpath指向的为自己所创建的class 或 jar包,核心库(如ArrayList,Scanner等JVM本身知道))
  3. 运行代码:
    java -cp 路径 com.Main(当前路径 路径为 . )
    java -cp test.jar com.Main(jar未指定主方法时候)

jar

  1. 如果有很多.class文件,散落在各层目录中,肯定不便于管理。如果能把目录打一个包,变成一个文件,就方便多了。
  2. jar包还可以包含一个特殊的/META-INF/MANIFEST.MF文件,MANIFEST.MF是纯文本,可以指定Main-Class和其它信息。JVM会自动读取这个MANIFEST.MF文件,如果存在Main-Class,我们就不必在命令行指定启动的类名
  3. 打包项目为jar包后直接运行代码为:java -jar test.jar

模块

  1. 产生原因:.class文件是JVM看到的最小可执行文件,而一个大型程序需要编写很多Class,并生成一堆.class文件,很不便于管理,虽然有jar可以将Class文件打包,但jar只是用于存放class的容器,它并不关心class之间的依赖。从Java 9开始引入的模块,主要是为了解决“依赖”这个问题。如果a.jar必须依赖另一个b.jar才能运行,那我们应该给a.jar加点说明啥的,让程序在编译和运行的时候能自动定位到b.jar,这种自带“依赖关系”的class容器就是模块。

  2. Java 9引入的模块目的是为了管理依赖;

  3. 使用模块可以按需打包JRE;

  4. 使用模块对类的访问权限有了进一步限制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值