Java之道丨Maven項目build時出現No compiler is provided的處理

近日在compile命令編譯Maven項目時出現[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?的問題, 到百度查看一下, 遇到這個問題的不在少數, 但是對問題的解釋沒有說到根源.其實,是jre的指向導致出現了此類問題,因為安裝jdk是默認有jre,另外還有一個下載安裝的jre。錯誤和解決方案如下,如有紕漏,敬請諒解!

錯誤代碼節選:

[java] view plain copy

  1. [ERROR] COMPILATION ERROR :

  2. [INFO] -------------------------------------------------------------

  3. [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

  4. [INFO] 1 error

  5. [INFO] -------------------------------------------------------------

  6. [INFO] ------------------------------------------------------------------------

  7. [INFO] BUILD FAILURE

  8. [INFO] ------------------------------------------------------------------------

  9. [INFO] Total time: 1.436 s

  10. [INFO] Finished at: 2017-06-28T11:16:07+08:00

  11. [INFO] Final Memory: 10M/151M

  12. [INFO] ------------------------------------------------------------------------

  13. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project manage: Compilation failure

  14. [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

  15. [ERROR] -> [Help 1]

但是編寫普通Java Project編譯運行卻是正常的,下圖為只有輸出語句的普通java類

Java之道丨Maven項目build時出現No compiler is provided的處理

從上圖中可以看出, java編譯環境未jre1.7.0_17, 也就是說並沒有配置成jdk目錄, 然後看Eclipse-->Window-->preferences-->Java-->Installed JREs

Java之道丨Maven項目build時出現No compiler is provided的處理

為了演示出效果, 在測試之前, 將系統java環境配置成如上圖所示路徑, 並只保留該配置, 由下圖可以看出, 該路徑是安裝的兩個JDK版本中的一個JDK自帶的jre運行環境. 使用該環境編譯普通項目沒有問題, 但為什麼會在編譯Maven項目時出錯呢?

Java之道丨Maven項目build時出現No compiler is provided的處理

我們看看Maven的環境是如何配置的:先找到Eclipse-->Window-->preferences-->Maven-->Installations

Java之道丨Maven項目build時出現No compiler is provided的處理

在Maven配置中, 我並沒有使用Eclipse自帶的Maven插件, 而是重新配置的Maven環境, 然後再看Eclipse-->Window-->preferences-->Maven-->User Settings

Java之道丨Maven項目build時出現No compiler is provided的處理

Maven設置使用的是Maven中conf文件夾下的settings.xml, 點擊"open file" 在Eclipse中查看具體配置信息, 僅摘錄與本錯誤信息相關的部分

[html] view plain copy

  1. jdk-1.7

  2. true

  3. 1.7

  4. 1.7

  5. 1.7

  6. 1.7

根據上面的配置, 我們需要指定一個符合配置的JDK環境, 這是我們之前在Eclipse-->Window-->preferences-->Java-->Installed JREs下的配置就不行了, 而需要指定一個JDK目錄, 例如JDK安裝目錄下的jdk1.7.0_17, 這也是這個錯誤出現的罪魁禍首. 不過對於Java開發者來說, Installed JREs中使用jdk目錄而不適用jre目錄也是最好的選擇.

Java之道丨Maven項目build時出現No compiler is provided的處理

步驟:

Java之道丨Maven項目build時出現No compiler is provided的處理

Java之道丨Maven項目build時出現No compiler is provided的處理

Java之道丨Maven項目build時出現No compiler is provided的處理

Java之道丨Maven項目build時出現No compiler is provided的處理

Java之道丨Maven項目build時出現No compiler is provided的處理

Java之道丨Maven項目build時出現No compiler is provided的處理

Java之道丨Maven項目build時出現No compiler is provided的處理

然後再編譯運行項目即可.


分享到:


相關文章: