我使用系统属性
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中执行此操作.