javac 在导入包时如何工作?

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

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

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

请帮忙。


有只小跳蛙
浏览 101回答 2
2回答

炎炎设计

首先,作为一个小评论,像这样的声明import java.util.List;只是引入了一个缩写,允许您List稍后在代码中使用简单的单词而不是完整的类名java.util.List。所以与其说是 import 语句本身,不如说是这样的类的用法java.util.List需要一些解释。您正确理解,要编译您的 java 文件,编译器需要有关您使用的每个类的一些信息,并且它通常会在包含该类的某个 jar 文件中找到这些信息。现在,这个包含java.util.List编译器读取的类的 jar 文件在哪里?你是对的,它来自 JRE,来自rt.jar系统类路径的一部分(Java 编译器本身是一个需要基本类本身的 java 程序,所以无论你成功运行javac,你总是有一个rt.jar可用的)。如果您的源代码使用了来自其他库的类,则必须在javac命令行上指定该库,使用类似-cp.

守着星空守着你

Jdk = JRE + other tools like you mentioned. 当您编译您的 java 文件并且您使用 java inbuild 库时,它用于rt.jar解决依赖关系,即导入语句。您可以参考下面的链接了解 JVM、JDK、JRE 和 OpenJDK 之间的区别是什么?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java