JRE系统库中每个jar的作用是什么

时间:2016-01-20 03:19:35

标签: java tomcat java-ee

我使用过servlet和jsp,但我只导入java基础jar。

哪个是javaEE jar?

HttpServlet依赖于Tomcat的servlet-api.jar,javaEE和tomcat之间的关系是什么? This is my structure in the project

谢谢!

1 个答案:

答案 0 :(得分:1)

1)rt.jar代表运行时,包含核心Java Runtime环境的所有已编译类文件。

2)您必须在类路径中包含rt.jar,否则您无法访问核心类,例如java.lang.String,java.lang.Thread,java.util.ArrayList或java.io.InputStream以及Java API中的所有其他类。您可以通过使用WinRAR或WinZip客户端打开它来实际查看rt.jar中的内容。您可以看到它不仅包含所有Java API,还包含com包中指定的内部类。

3)在windows中,rt.jar将始终位于$ JAVA_HOME / jre / lib下,其中$ JAVA_HOME指的是JDK安装目录。即使您没有安装JDK并只安装JRE,您也会在完全相同的位置看到它,您不会在$ JAVA_HOME / lib目录中找到rt.jar。 BTW,在MacOSX上,它被称为classes.jar,位于/ System / Library / Frameworks // Classes目录下。在下面的屏幕截图中,您可以看到rt.jar位于Windows 8的JRE< lib目录中。

4)rt.jar是所有Java包所在的地方。例如,如果类文件需要从java.util.concurrent包引用类,例如ConcurrentHashMap,然后JVM将在rt.jar中查找它,从而使它能够正确运行。

5)Java程序员问的另一个问题是,在哪里可以找到rt.jar中包含的类的源代码?好吧,如果您已经安装了JDK而不是JRE,那么您可以在$ JAVA_HOME / src.zip文件中找到所有源代码。 BTW,sun。*源也包含在src.zip中,但这是专有的闭源Oracle代码。我还建议你在Eclipse中包含这个JAR文件,这样你只需输入Ctrl + T和类的名称就可以查看任何JDK类的源代码,其余的将由Eclipse的Java类型搜索来处理功能。

6)关于rt.jar最重要的事情之一就是JVM知道这个JAR文件中的所有类,这意味着JVM在加载任何其他JAR时都不会执行所有检查。从任何其他位置。这是由于各种性能原因以及这些类由bootstrap或primodial类加载器加载的原因而完成的。不要尝试将您的类文件包含在rt.jar中,因为Java不建议这样做。它也与任何安全性妥协。

7)如果您对Java平台使用的不同二进制文件和JAR文件感到好奇,请查看此图。您可以看到JDK有三个主文件夹bin,lib和jre。 bin目录包含所有二进制可执java.exe运行Java程序,javac.exe编译Java程序等lib包含tools.jar和dt.jar。 jre文件夹再次包含bin和lib目录。它位于此目录rt.jar驻留中。顺便说一下,为了完整解释每个文件和文件夹的功能,请查看Oracle官方页面。它们非常全面和具有描述性。

enter image description here

所有关于Java的rt.jar文件。现在你知道rt.jar的目的是什么,为什么你不应该惹它。您可以在$ JAVA_HOME / jre / lib目录中找到此JAR文件,我建议您自己查看。

了解详情:http://javarevisited.blogspot.com/2015/01/what-is-rtjar-in-javajdkjre-why-its-important.html#ixzz3xkhLYtjP