jdk jre

 JDK(java develop kit ,java開發套件),JRE(java runtime environment,java運行時環境),JVM(java virtual machine,java虛擬機)
     JDK
     ++
        |-----jre
                ++
                  |-------jvm
                  |-------
      jre只是jdk的一個部分,我們只要擁有了一份jdk就可以進行java程序開發了,而顧名思義,jre是java運行的時候所依賴的平臺,jvm則更只是jre的一個部分,jre除了虛擬機外還提供了衆多鏈接庫,這些庫會被jvm在運行時調用。
      我們會發現java_home/下有一個bin文件夾和一個jre文件夾,而jre文件夾下也有一個bin文件夾,它們一樣嗎?顯然不一樣。
java_home/bin中的工具是sun公司提供給我們一些工具,如java.exe,javac.exe,而jre/bin下的工具是運行時所需的,於是我們可以發現java_home/bin下有一個javac.exe,而jre/bin下肯定沒有javac.exe,這是很容易解釋的。
      奇怪的是,sun公司給我們提供了兩套jre,稍留意一下我們就會發現在裝完jdk,還可以選擇裝一個jre,這個jre是被默認裝到C:\Program Files\Java下的。sun提供兩套jre是有道理的,如果我們只是想運行java程序,那麼去官網下一個jre就行了,而無需拿來一個jdk,如果是要開發java程序那就需要一個jdk了."jdk裏面的工具幾乎都是用java寫的,所以jdk本身就是java應用程序,因此要使用jdk附的工具來開發java程序也必須要自行附一套jre才行,這就是java_home\jre存在的原因,而位於Program File\jre的那套jre就是拿來執行我們自己寫的java應用程序的。不過,兩套中任何一套jre都可以拿來執行我們所寫的java應用程序,可是jdk內附的開發工具在預設開發工具使用包裝器(.exe)來啓動的情況下,都拿自己支選用java_home\jre".(《Java深度歷險》)
      因此,現在可以明白設path和classpath的作用了:path是爲jdk提供的那些工具設的,如java.exe,javac.exe,而classpath是爲java程序所用到的庫文件所設的,於是path設成:java_home\bin;而classpath設爲:java_home\jre\lib\rt.jar,如果我們開發的一個應用中用到了非j2se提供的庫文件,則需將這些文件加到classpath中,比如說利用javamail開發一個郵件應用,就應該把mail.jar
等文件加到classpath中:java_home\jre\lib\ext\mail.jar;.
     如果一臺PC上裝了幾個jre,那麼就要注意了,有時很容易產生問題,很可能我們用來編譯java程序的javac.exe所相關的jre與運行程序時所用的jre不是一個版本, 這可能會產生版本衝突,這可以通過設定path變量來解決。
      最後應用中的第三方文件應該加到java_home\jre\lib\ext下,就像剛纔那樣,與java相關的安全設定檔都放置java_home\jre\lib\security。最後擴展一點,與java相關的很多工具的path設定原則都與上述差不多,比如說想安裝一個Ant,應該在path 中這樣設:
F:\\Ant\apache-ant-1.6.5\bin;看看bin下有什麼就明白這樣做是爲了指定命令工具ant所在的目錄。

 

 

 

java.lang.NoClassDefFoundError: com/lang/Sun
Exception in thread "main"

重新導一下jar包就ok了

發佈了42 篇原創文章 · 獲贊 2 · 訪問量 4343
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章