当我们开始在Eclipse中的.java文件中编写代码时,它会立即检测并显示错误,如果.java文件中有任何错误,这意味着在我们编写代码的同时它正在编译该代码并显示编译错误。 问题是 eclipse是否并排编译所有java代码并在我们在java文件中编写代码时生成.class文件。 如果是,当我们使用构建选项时会发生什么。它还将.java文件编译为.class文件。
请解释这两个条件之间的区别?
答案 0 :(得分:1)
Eclipse和IntelliJ等Java IDE在编写代码错误时不需要编译代码。如果你考虑一下,这永远不会奏效。当错误导致编译失败时,如何编译代码来标记错误?
他们可以做到这一点,因为它被称为抽象语法树。所有编译器都使用词法分析器/解析器将代码解析为标记,并将其排列为称为抽象语法树的数据结构。这个AST知道定义正确语言结构的语法规则。当你写一些与语法规则相悖的东西时,AST会让IDE知道。然后,IDE可以在您尝试编译之前突出显示您所做的错误并解决问题。
你可能会说"这听起来像是对我的汇编。"在编译器必须创建AST的意义上,你是正确的。区别在于IDE不会引导AST并生成字节代码;编译器。
答案 1 :(得分:0)
Eclipse只是一个IDE,将其视为编辑器。当它显示错误时,它基于语法,验证和构建路径。当你“编译”时,Eclipse正在使用javac编译器生成.class文件,这与编写时只显示错误不同...
以下是关于编译的一个很好的解释: https://en.wikibooks.org/wiki/Java_Programming/Compilation
答案 2 :(得分:0)
您有两种工作模式:自动构建模式和手动构建模式。默认情况下,您处于自动构建模式,Eclipse负责自动编译源文件。每次更改工作区中的文件时,都会在后台自动生成构建(例如,保存编辑器)。自动构建很方便,因为它意味着问题视图,二进制文件等始终是最新的。缺点是,在大型工作区中,如果要更改具有大量下游相关项目的项目中的文件,则自动构建可能非常耗时。
虽然大多数时候会强迫你进行手动构建。如果你要坚持使用Eclipse,请习惯它。