java – 为什么rt.jar不属于类路径系统属性?

我使用系统属性 java.class.path来查找属于类路径的所有jar和目录.在第一个sigth,这似乎很好.但仔细观察后,我发现当我使用gradle执行程序时,此类路径中没有rt.jar.当从IntelliJ IDEA执行’t.jar’是该类的一部分.

为什么IntelliJ和Gradle之间的类路径以这种方式不同?

需要明确的是:rt.jar中包含的所有类都可以正常加载,这只是令我困惑的属性.

解决方法

rt.jar不需要在类路径中,因为它已经在bootclasspath中.
从类路径中删除它是安全的.

您可以参考此Oracle doc:http://docs.oracle.com/javase/8/docs/technotes/tools/findingclasses.html

Java Launcher如何查找Bootstrap类
Bootstrap类是实现Java 2平台的类. Bootstrap类位于rt.jar和jre / lib目录中的其他几个jar文件中.这些归档由bootstrap类路径的值指定,该路径存储在sun.boot.class.path系统属性中.此系统属性仅供参考,不应直接修改.

您不太可能需要重新定义引导类路径.非标准选项-Xbootclasspath允许您在需要使用不同核心类集的那些罕见的cicrcumstances中执行此操作.

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...