記一次Eclipse關於JDK和JRE的問題
今天同事遇到個問題,發現import package居然報錯,但是那個package實際上存在。一般情況某個類有問題或者是該類中的方法有問題,總會在IDE中顯示一條紅線。但是這次確實是沒有問題。我找到該類所在的子模組,使用mvn install。這個錯誤我之前遇到過,光update project是沒有用的,update project主要作用是同步。比如,我在父工程中加入其他第三方外掛依賴,有些地方需要它,有的時候,明明已經匯入該依賴,可是我卻不能用它。這時,只需update project即可。根據整個專案的大小,需要的時間是不同的,如果專案過大,update project的時間可能會過長。
貼貼關於mvn install的錯誤:
關鍵資訊就是:No compile is provider in this environment.Perhaps you are running on a JRE rather then a JDK
翻譯過來的意思是:
在此環境中沒有編譯器提供程式。也許您執行的是JRE而不是JDK
很多篇部落格只講如何解決,不講是什麼原因。
當然了,開發經驗多年的小夥伴們一眼就看出了。直接就知道怎麼解決。
在此我要說說JDK和JRE的區別,雖然這個也是老生常談,但是這回我要結合這個錯誤,談點不一樣的。
JDK和JRE有如下區別:
相同點:
都可以執行JAVA程式,JDK中包含JRE,JRE本身就是Java執行環境。
不同點:
JDK全稱為"JAVA 開發工具包",JRE全稱為"JAVA執行環境":
JRE是java runtime environment(java執行環境)的縮寫。光有JVM還不能讓class檔案執行,因為在解釋class的時候JVM需要呼叫解釋所需要的類庫lib。在JDK的安裝目錄裡你可以找到jre目錄,
裡面有兩個資料夾bin和lib,在這裡可以認為bin裡的就是jvm,lib中則是jvm工作所需要的類庫,而jvm合lib合起來就稱為jre。所以,當你寫完java程式,也就.java檔案時,當其編譯成.class檔案後,你可以 把這個.class檔案和jre發給朋友,這樣你的朋友就可以執行你寫的程式了(jre中有執行.class的java.exe)。
JDK:JDK是java development kit(java開發工具包)的縮寫。每個做java開發的人都會先在機器上裝一個JDK,那 讓我們看一下JDK的安裝目錄。在目錄下面有六個資料夾、一個src類庫原始碼壓縮包、和其他幾個宣告檔案。其中,真正在執行java時起作用的是以下四個資料夾:bin、include、lib、jre。現在我們可以看出這樣一個關係,JDK包含JRE,而JRE包含JVM。
JRE和JDK比較可以得出一個結論,就是jdk不需要jre就可以跑起來,因為它包含jre,而jre不需要jdk也能執行,因為其有執行.class的java.exe。這個也是java面試基礎常考的題目之一。
關於JAVA編譯原理可以參考我的這篇部落格:說說Javac
小結:
任何時候都要牢記一個準則,“夯實基礎”。荀子說:"不積跬步無以至千里“。不論是生活還是學習都是這麼個理。
希望這篇博文,能給大家帶來啟發和幫助。