jdk 的lib 理解

 过一会,您就会发现向类路径手工添加 bin 目录和 JAR 归档文件太过繁琐。这时您可能会想要使用 CLASSPATH 环境变量。可以只向 CLASSPATH 环境变量添加一次目录和 JAR 归档文件,之后就不需要在每次运行 javac 或 java 时都要再键入这些路径。

  请务必抵制这种诱惑。这样做,一旦加载了错误的类或错误版本的类,就会出问题。而且意外加载错误的类所带来的调试时间常常会百倍于省下的那点键入时间。要避免输入并自动处理类路径有更好的方法。

  jre/lib/ext

  放在 jrelibext 目录中的 JAR 归档文件会被添加到通过虚拟机运行的所有应用程序的类路径。这看起来很方便,实际上它与向 CLASSPATH 环境变量添加目录一样,存在长远的潜在问题。您迟早(通常很快)会在您想都想不到的地方加载类的一个错误版本的类并会为此付出大量的调试时间。

  部署一个服务器端的应用程序时,问题就更为严峻。请确保部署到的服务器在其 jrelibext 目录没有任何额外的 JAR。如果您不熟悉错误症状,也不知道该如何查找,那么由类路径中的错误版本的 JAV 归档文件所带来的问题可能会非常难于调试。为了避免这些问题的出现,一些框架甚至编写了自己的类加载器,用来绕过 Java 代码通常的类加载机制。

  jre/lib/endorsed

  放在 jrelibendorsed 目录中的 JAR 文件也被添加到了通过虚拟机运行的所有应用程序的类路径。不同的是,这里的文件被实际放入了 bootclasspath 而不是通常的类路径,并可以代替 JDK 附带的标准类。这种方式对于在 VM 更新 XML 解析器和修复 bug 尤其有用。

  但是,如前所述,这种方法看起来十分方便,但实际上也存在长期的潜在问题,原因也一样。如果需要替换 JDK 类,可以在运行时使用 -Xbootclasspath/p 选项来避免意外地加载错误版本的类。

<!-- 分页 -->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值