昨天我从Eclipse切换到IntelliJ IDEA。

我也在WebSphere Server 7中使用JRebel。

现在一切似乎都运行得很好,除了当我修改一个Java文件并点击保存时,IntelliJ不会重新编译文件,以便JRebel拾取它。

Eclipse的“自动构建”特性解决了这个问题。

在IntelliJ IDEA中,我必须按CTRL+SHIFT+9来重新编译JRebel的相关类。如果跨两个文件进行更改,我必须在每个文件上都这样做,因为IntelliJ使用了保存所有机制,很难知道手动重新编译什么,我也不感兴趣。

难道没有办法让IntelliJ自己来做这个吗?


当前回答

我也有同样的问题。我认为检查你的类是否可以编译是合适的。单击recompile(默认为Ctrl+Shift+F9)。如果它不工作,那么你必须调查为什么它不能编译。

在我的例子中,代码没有自动编译,因为编译过程中存在隐藏的错误(它们没有在任何地方的日志中显示,而且maven clean-install正在工作)。根本原因是错误的项目结构->模块配置,因此Intellij Idea无法根据此配置构建它。

其他回答

我设法用宏来解决这个问题。

我开始录制一个宏:

点击编辑-宏-开始宏录制 单击“文件-全部保存” 单击“生成-制作项目” 单击编辑-宏-停止宏记录

命名一些有用的东西,比如“SaveAndMake”。

现在只需删除保存所有键绑定,并添加相同的键绑定到您的宏!

所以现在,每次我保存,它保存并进行脏编译,jRebel现在正确地检测所有更改。

实际上没有区别,因为两者都需要1次点击:

Eclipse:手动保存,自动编译。 IntelliJ:自动保存,手动编译。

最简单的解决办法就是习惯它。因为当您在IDE中度过大部分时间时,最好在一个IDE中养成快习惯,而不是在几个IDE中养成慢习惯。

没有足够的点来评论现有的答案,但类似于上面的一些人,我只是添加了一个宏和键图来组织导入/格式化/保存所有/快速加载(F9) /同步。

同步是添加的,因为它似乎是我还可以看到由外部构建工具/观察者(即webpack)修改的资源更新的唯一方式。

这个过程比eclipse慢——而且对于外部文件刷新经常需要多次运行该命令——但假设我可以接受它。

更新

对于IntelliJ IDEA 12+版本,如果我们使用外部编译器选项,我们可以自动构建编辑过的源代码。唯一需要做的就是勾选位于“编译器”设置下的“自动构建项目”选项:

此外,如果你想在应用程序运行时热部署,或者如果你使用spring boot devtools,你也应该从注册表中启用compiler. autommake .allow.when.app.running。这将自动编译您的更改。

对于大于2021.2的版本,我们需要勾选“即使开发应用程序正在运行,也允许自动启动”选项:

对于2021.2之前的版本:

使用Ctrl+Shift+A(或Mac上的⌘+Shift+A)键入Registry,一旦注册表窗口打开,找到并启用compiler. autommake .allow.when.app.running,参见这里:


For versions older than 12, you can use the *EclipseMode* plugin to make IDEA automatically compile the saved files.

有关更多提示,请参阅“从Eclipse迁移到IntelliJ IDEA”指南。

在我的maven项目中,唯一受此影响的是在单元测试的运行配置中添加“test-compile”目标。令人难以置信的笨拙解决方案,但它有效。