1. 程式人生 > >記一次Eclipse關於JDK和JRE的問題

記一次Eclipse關於JDK和JRE的問題

同步 javac 原理 ava itl 之前 java src 如何

今天同事遇到個問題,發現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

小結:

任何時候都要牢記一個準則,“夯實基礎”。荀子說:"不積跬步無以至千裏“。不論是生活還是學習都是這麽個理。

希望這篇博文,能給大家帶來啟發和幫助。

記一次Eclipse關於JDK和JRE的問題