为了账号安全,请及时绑定邮箱和手机立即绑定

javac 在导入包时如何工作?

javac 在导入包时如何工作?

有只小跳蛙 2022-05-25 16:16:48
我有一个疑问。我的理解是jdk有[ jre+开发工具(Java、javac、调试器等)+源代码(src.zip)]。现在java编译器的工作与类文件的运行无关。如果我正在编译一个.java文件,那么 java 编译器从哪里导入包?我可以在jre.如果我在安装时不选择jre安装jdk,这是否意味着我将无法编译具有 import 语句的 java 文件?请帮忙。
查看完整描述

2 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

首先,作为一个小评论,像这样的声明

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.


查看完整回答
反对 回复 2022-05-25
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

Jdk = JRE + other tools like you mentioned. 当您编译您的 java 文件并且您使用 java inbuild 库时,它用于rt.jar解决依赖关系,即导入语句。您可以参考下面的链接了解 JVM、JDK、JRE 和 OpenJDK 之间的区别是什么?


查看完整回答
反对 回复 2022-05-25
  • 2 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信