相比較于 Eclipse 的實時自動編譯,IntelliJ IDEA 的編譯更加手動化,雖然 IntelliJ IDEA 也支援通過設定開啟實時編譯,但是不建議,因為太占資源了。IntelliJ IDEA 編譯方式除了手工點選編譯按鈕進行編譯之外,還有就是在容器運作之前配置上一個編譯事件,先編譯後運作。預設下 IntelliJ IDEA 也都是這樣的設定,是以實際開發中你也不用太注意編譯這件事。雖然 IntelliJ IDEA 沒有實時編譯,但是對于代碼檢查完全是沒有影響。但是多個類之間的關聯關系還是要等 Make 或 Rebuild 觸發的時候才會做相關檢查的。
在 IntelliJ IDEA 裡,編譯方式一共有三種:
Compile:對標明的目标(Java 類檔案),進行強制性編譯,不管目标是否是被修改過。
Rebuild:對標明的目标(Project),進行強制性編譯,不管目标是否是被修改過,由于 Rebuild 的目标隻有 Project,是以 Rebuild 每次花的時間會比較長。
Make:使用最多的編譯操作。對標明的目标(Project 或 Module)進行編譯,但隻編譯有修改過的檔案,沒有修改過的檔案不會編譯,這樣平時開發大型項目才不會浪費時間在編譯過程中。
如上圖示注 1 所示,Compile 的操作有:Compile 指定類
如上圖示注 1 所示,Rebuild 的操作有:Rebuild Project
如上圖示注 1 所示,Make 的操作有:Make Project、Make Module
如上圖所示,IntelliJ IDEA 預設在運作 JUnit 之前會先進行 Make 操作。
如上圖所示,IntelliJ IDEA 預設在運作 tomcat 之前會先進行 Make 操作。
上圖示注 1 所示,也是我們本文前面講的,IntelliJ IDEA 是支援自動編譯的,預設是不開啟的,也建議不用開啟,原因前面已經說了。
上圖示注 2 所示,設定編譯 heap 大小,預設是 700,建議使用 64 位的使用者,在記憶體足夠的情況下,建議改為 1500 或以上。如果你在編譯的時候出錯,報:OutOfMemoryError,一般也是要來改這個地方。
上圖示注 3 所示,還可以設定編譯時的 VM 參數,這個你可以根據需求進行設定,一般人是用不上的。
如上圖示注 1 所示,可以添加目錄 或 檔案進行編譯排除。
在項目中,如果有任何一個可編譯的檔案無法編譯通過,則 IntelliJ IDEA 是無法運作起來的,必須等你全部問題解決,編譯通過之後才可運作。但是可能開發過程中,某一個包目錄的檔案編譯無法通過,但是我們又不急着改,那我們就可以考慮把該包加入到排除編譯清單中,則項目就可以運作起來。
如上圖動态 Gif 所示,IntelliJ IDEA 支援常見的幾種編譯器:Javac、Eclipse、Ajc 等。預設是 Javac,也推薦使用 Javac。
Project bytecode version 針對項目位元組碼編譯版本,一般選擇的是目前項目主 JDK 的版本。
Per-module bytecode version 可以針對 Project 下各個 Module 的特殊需求單獨設定不同的 bytecode version,前提是電腦上必須有安裝對應的 JDK 版本。
Error:java: Compilation failed: internal java compiler error
http://www.cnblogs.com/faunjoe88/p/5735027.html
http://blog.csdn.net/wave_1102/article/details/47671019
java: -source 1.5 中不支援 lambda 表達式
(請使用 -source 8 或更高版本以啟用 lambda 表達式)