导入包时javac如何工作?

时间:2019-01-29 17:33:38

标签: java jdk1.7

我有疑问。
我的理解是jdk具有[jre +开发工具(Java,javac,调试器等)+源代码(src.zip)]。

现在Java编译器的工作与类文件的运行无关。

如果我正在编译.java文件,那么Java编译器将从那里导入包?
我可以在jre下找到这些软件包。
如果在安装jre时不选择安装jdk,这是否意味着我将无法编译具有import语句的Java文件?

请帮助。

2 个答案:

答案 0 :(得分:2)

首先,作为次要说明,类似

import java.util.List;

只是引入了一个缩写,允许您稍后在代码中使用简单单词List而不是完整的类名java.util.List。因此,与其说import语句本身,不如说是java.util.List这样的类的用法,还需要一些解释。

您正确理解,要编译Java文件,编译器需要有关您使用的每个类的一些信息,并且通常会在包含该类的jar文件中找到此信息。

现在,这个jar文件在哪里包含编译器读取的java.util.List类?没错,它来自JRE,来自系统类路径一部分的rt.jar(Java编译器本身是一个需要基本类本身的Java程序,因此无论您在何处成功运行javac ,您总是有rt.jar可用。)

如果您的源代码使用了其他库中的类,则必须使用javac之类的选项在-cp命令行上指定该库。

答案 1 :(得分:0)

Jdk = JRE + other tools like you mentioned. 当您编译Java文件并且使用Java inbuild库时,它将使用rt.jar来解决依赖项,即import语句。 您可以参考以下链接以了解不同之处 What is the difference between JVM, JDK, JRE & OpenJDK?