我有疑问。
我的理解是jdk
具有[jre
+开发工具(Java,javac,调试器等)+源代码(src.zip)]。
现在Java编译器的工作与类文件的运行无关。
如果我正在编译.java
文件,那么Java编译器将从那里导入包?
我可以在jre
下找到这些软件包。
如果在安装jre
时不选择安装jdk
,这是否意味着我将无法编译具有import语句的Java文件?
请帮助。
答案 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?