java中rt.jar文件_为什么我们在一个java项目中使用rt.jar?

rt =运行时间

它包含所有的Java运行时库。 (必要)

它包含了Java运行时环境中提供的所有类。

如果您的类path中没有它,则无法访问您需要使用的任何类,如java.lang.String或java.io.File。

交叉编译是你必须明确使用它的一种情况。

例如,如果您使用Java 8,并且希望在拒绝Java 8扩展的同时编译Java 7。 所以你可以尝试:

javac -source 1.7 Main.java

但是,然后javac会说: warning: [options] bootstrap class path not set in conjunction with -source 1.7 ,因为它可能会产生错误合作编译对不同版本的JCL。

所以你需要设置rt.jar :

javac -source 1.7 -bootclasspath /usr/lib/jvm/java-7-oracle/jre/lib/rt.jar Main.java

这是要求: 警告:[选项] bootstrap类path未与-source 1.5一起设置

它包含Java内置的类。 rt也许代表Runtime 。 没有它,你不能运行Java程序:)

rt.jar是所有java包所在的地方。 例如,如果一个类文件调用java.util包,则JVM可以在rt.jar中查找它,从而使其能够正确运行。

旁注:不要乱用它。

rt.jar代表运行时JAR并包含引导类,我指的是来自Core Java API的所有类。 我发现很多Java程序员不知道什么是rt.jar? 并经常与rt.jar文件的作用或为什么我们在Java中使用rt.jar文件混淆? 毫不奇怪,这个名字有点神秘。

这个文件总是驻留在JRE的lib目录中,至less在Windows和Linux中。 在MacOSX中,它位于不同的位置,也有不同的名称,即classes.jar,但这只是在JDK 1.7之前。 从Java 7发行版开始,Apple停止发行Java,如果单独安装,它将与rt.jar具有相同的名称。

许多开发人员认为在rt.jar中包含他们的类来解决类path相关的问题,但这是一个坏主意。 你不应该搞乱rt.jar,它包含的是JVM所信任的类文件,并且没有严格的安全检查来加载其它类文件。

运行时(rt.jar)包含构成Java SE的所有(大部分)Java类。 它会自动添加到类path中。

它包含所有标准的JDK类。 在JVM的类加载过程中,这是第一个被加载的类,由所有类加载器的父类的引导类加载器完成。

你可以用这个选项编译一个java程序自己检查一下:

javac -verbose:class program.java

以便查看加载的类的顺序。

样品:

[Loaded sun.security.timestamp.TimestampToken from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar] [Loaded sun.security.util.CertConstraintParameters from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar] [Loaded sun.security.util.ECKeySizeParameterSpec from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar] [Loaded sun.security.util.ECUtil from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar] [Loaded sun.security.util.Pem from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值