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