IntelliJ 是否一直在编译,因为当出现错误时它会用红色波浪线告诉我?(除了自动完成功能之外)或者它正在执行某种伪编译?

如果它正在进行合法编译,那么它会将这些已编译的类放在哪里?我想将我的 JRebel 指向该目录而不是单个模块目标文件夹。

有帮助吗?

解决方案

Meo 是对的,根据我在开发自定义语言插件时了解到的情况,IntelliJ 在您明确创建项目之前不会编译任何内容。当您键入时,其词法分析器/解析器会检测到任何无效的标记或代码构造。同时,它维护项目中每个类和方法及其依赖项的索引,以及它们的签名等。

停止打字后,您会在右侧排水沟的顶部看到一个小彩色眼睛。它表明 IDE 正在运行“注释器”和“代码检查”。他们能够根据当前索引和文件的当前状态(导入、声明等)判断类、方法和变量是否有效。对于未使用的变量、方法调用中的无效参数等也是如此。

优点:

  • 注释器直接在他们所谓的 PSI 树上工作,这基本上是代表当前文件的增强 AST
  • 它可能比每次编译更快(它使用索引并且不需要重新编译每个依赖类)
  • 注释者可以检测事物 javac 不关心,例如潜在的错误(例如使用 = 代替 == 在一个 while 健康)状况)

缺点:

  • 这是一项艰巨的工作,基本上他们需要重写逻辑才能找到每个错误 javac 可以产生(这就是为什么你可以在他们的 bugtracker 上找到许多标记为“的问题”好的代码是红色的”或“坏代码是绿色的”,这意味着它们检测到的内容与编译器输出的内容之间存在差异)

长话短说:它不产生任何 .class 在你完成你的项目之前,一切都是“手工”完成的

其他提示

对于每个模块,可以从模块设置中的路径选项卡中找到编译器输出路径。 jrebel plugin自动生成rebel.xml,并从模块设置派生目录路径,因此您无需手动指向位置 - 只需使用IDE插件生成Rebel.xml:右键单击模块Project View - > JRebel - >生成Rebel.xml

intellij了解代码,它不需要编译代码以了解出了什么问题。

刚刚添加,在编译后,类存储在target目录中,如果它是一个Maven项目 - 否则,在Intellij的项目结构中指定了目录,“项目编译器输出”:

我发现了我的.class文件通过从项目的主目录中转到Out / Production / Main文件夹。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top