我有疑问。
我的理解是jdk
有[jre
+开发工具(Java、javac、调试器等)+源代码(src.zip)]。
现在java编译器的工作与class文件的运行无关。
如果我正在编译 .java
文件,那么 java 编译器从哪里导入包?
我可以在jre
下找到这些包。
如果我在安装jdk
时不选择安装jre
,是否意味着我将无法编译包含import语句的java文件?
请帮忙。
最佳答案
首先,作为一个小评论,像这样的声明
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
等选项指定该库。
关于java - 导入包时 javac 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54426608/