当前位置: 首页 > 面试题库 >

IntelliJ在键入期间进行编译时将.class文件放在哪里

乐正峰
2023-03-14
问题内容

IntelliJ是否一直在编译,因为出现错误时它会用红色的蠕变线告诉我?(除了自动完成功能之外)还是在进行某种伪编译?

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


问题答案:

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

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

优点:

  • 注释器直接在他们所谓的PSI树上工作,它基本上是代表您当前文件的增强型AST
  • 每次编译可能会更快(它使用索引并且不需要重新编译每个从属类)
  • 注释者可以检测到javac无关紧要的东西,例如潜在的错误(例如,使用=而不是==在某种while情况下使用)

缺点:

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

TL; DR:.class在您制作项目之前,它不会产生任何结果,所有事情都是“手工”完成的



 类似资料:
  • 问题内容: 我正在使用XJC从XSD文件生成一堆.java文件。我还需要将这些文件编译为.class文件,并在运行时通过反射使用它们。 我遇到的问题是,在生成.java文件并尝试对其进行编译之后,编译器无法正确地对其进行编译,并给我以下错误: 我假设这与JVM不了解我刚刚生成的包,因此找不到引用的类有关。 这可以通过在生成.java文件后重新启动程序来解决。但是我很好奇,是否有一种方法可以在运行时

  • 问题内容: 我对约会有点困惑。我目前正在使用天气应用程序,并且一切正常。.我只是想将这种类型的格式处理成我自己想要的格式。 我只想将此日期转换为大纪元时间,然后以所需的格式确定日期:: 对于J-SON 或者我想将此日期转换为更少的数字,例如,Sun,9月9日9:23 Am等。 http://dataservice.accuweather.com/currentconditions/v1/25707

  • 我已经在我的Red Hat 64中安装了spark hadoop env。我还想在intelliJ idea的spark源代码项目中读写代码。我已经下载了spark源代码并做好了一切准备。但我在IntelliJ idea中编译spark项目时出现了一些错误。以下是错误: /home/xuch/IdeaProjects/spark/sql/catalyst/src/main/scala/org/ap

  • 我从start.spring生成了一个gradle项目。io使用spring初始化器,并在其中添加了几行,以打印出典型的hello world消息以及url的名称。当在本地主机8080上从intellij idea运行时,它可以正常工作。但是jar文件在哪里?我选择了jar打包并添加了web依赖项。我的印象是,这将生成一个jar文件,包括我可以“只运行”的web服务器。我错过了什么?

  • 我正在尝试解决我的配置文件问题。 我有这个结构的Spring MVC应用程序(我当前的结构) (这是相当标准的maven项目目录结构) 所以,我的问题是:< b >我应该把spring配置文件放到resources目录中吗?我不确定它们是否可以被视为资源文件。大多数spring项目都在WEB-INF/目录中有配置。但是单元测试有一个问题,因为当我需要加载servlet配置时,maven需要/tes

  • 我有一个React Native项目,大约有3到4个屏幕。 在反编译生成的Android classes.dex文件后,我只找到了两个Java类。如果我说React Native将组件编译为本机Android类是正确的,那么这些屏幕的所有Android类都在哪里? 请注意:APK捆绑正确,因为它在Android设备上运行良好。 我还运行了以下命令来创建APK: 谢谢