IntelliJ 是否一直在编译,因为它会在出现错误时用红色波浪线告诉我?(除了自动完成功能)还是在做某种伪编译?
如果它在做合法的编译,它把这些编译的类放在哪里?我想将我的 JRebel 指向该目录而不是单个模块目标文件夹。
IntelliJ 是否一直在编译,因为它会在出现错误时用红色波浪线告诉我?(除了自动完成功能)还是在做某种伪编译?
如果它在做合法的编译,它把这些编译的类放在哪里?我想将我的 JRebel 指向该目录而不是单个模块目标文件夹。
Meo 是对的,从我为自定义语言开发插件时学到的知识,IntelliJ 不会编译任何东西,直到你明确地制作你的项目。在您键入时,它的词法分析器/解析器会检测到任何无效的标记或代码结构。同时,它维护项目中每个类和方法及其依赖项的索引,以及它们的签名等。
停止输入后,您会在右侧装订线的顶部看到一个彩色的小眼睛。它表明 IDE 正在运行“注释器”和“代码检查”。他们能够根据当前索引和文件的当前状态(导入、声明等)判断类、方法和变量是否有效。未使用的变量、方法调用中的无效参数等也是如此。
优点:
javac
不关心的事情,例如潜在的错误(例如使用=
而不是==
在while
条件中)缺点:
javac
可能产生的每个错误(这就是为什么您可以在他们的 bugtracker 上找到许多标有“好代码是红色”或“坏代码是绿色”的问题,这意味着有它们检测到的内容与编译器输出的内容之间的差异)TL;DR:在你制作项目之前它不会产生任何.class
东西,一切都是“手工”完成的
对于每个模块,可以从Module Settings的Paths选项卡中找到编译器输出路径。JRebel 插件自动生成 rebel.xml 并从Module Settings派生目录路径,因此您无需手动指向位置 - 只需使用 IDE 插件生成 rebel.xml:在项目视图中右键单击模块 -> JRebel - >> 生成 rebel.xml
IntelliJ 理解代码,它不需要编译代码就知道出了什么问题。
我通过从项目的主目录转到 out/production/main 文件夹找到了我的 .class 文件。