IntelliJ 在打字过程中编译时将 .class 文件放在哪里
-
21-12-2019 - |
题
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了解代码,它不需要编译代码以了解出了什么问题。
我发现了我的.class文件通过从项目的主目录中转到Out / Production / Main文件夹。
不隶属于 StackOverflow