
1. 項目概述為什么JDK 11依然是當下的明智之選如果你剛開始接觸Java開發或者正準備將手頭的項目升級到更新的Java版本那么“下載、安裝、配置JDK”這個看似簡單的第一步往往就是第一個攔路虎。網上的教程五花八門有的步驟缺失有的鏈接失效更別提那些夾雜著各種廣告和錯誤信息的頁面了。今天我就以一個老開發的身份帶你從頭到尾、毫無保留地走一遍JDK 11的安裝與環境配置全過程。我選擇JDK 11作為示例不是因為它最新恰恰是因為它在“穩定性”、“長期支持LTS”和“新特性”之間取得了絕佳的平衡。Oracle對JDK 11提供長期支持直到2026年這意味著它有足夠長的生命周期供企業級應用使用同時它引入了像局部變量類型推斷var、全新的HTTP客戶端、ZGC垃圾收集器等革命性特性是告別老舊JDK 8、邁向現代Java開發非常堅實的一步。無論你是學生、初學者還是需要為團隊統一開發環境的老手這篇詳盡的指南都能讓你一次搞定避免后續因環境問題帶來的各種詭異報錯。2. 核心思路與版本選擇理解Oracle JDK與OpenJDK在動手下載之前我們必須先理清一個關鍵概念你下載的到底是什么這直接關系到后續的授權、更新和兼容性。2.1 Oracle JDK與OpenJDK的淵源與現狀早年Sun公司后被Oracle收購發布的官方JDK就是Oracle JDK。同時Sun也將JDK開源形成了OpenJDK項目。在JDK 11之前Oracle JDK和OpenJDK在功能上幾乎一致但Oracle JDK包含一些額外的商業特性如Java Flight Recorder和不同的授權協議。但從JDK 11開始Oracle做了一個重大調整Oracle不再為“生產環境”的商用提供免費的長期更新。你可以免費下載和使用Oracle JDK 11進行開發和測試但如果你想在生產環境中獲得官方的季度安全更新和漏洞修復就需要訂閱Oracle的付費支持服務。這就引出了我們當前的最佳實踐對于大多數個人開發者、學習者和非商業項目推薦直接使用OpenJDK的構建版本。OpenJDK是開源的其社區構建版本如Adoptium/Temurin、Amazon Corretto、Azul Zulu等完全免費并且提供與Oracle JDK功能完全一致的LTS版本支持包括及時的安全更新。我們今天教程的核心也將圍繞如何獲取和安裝這些優秀的OpenJDK發行版展開。2.2 主流OpenJDK發行版選型建議面對眾多OpenJDK發行版該如何選擇這里我基于穩定性和社區活躍度給出建議Eclipse Temurin原AdoptOpenJDK/Adoptium這是目前最受社區歡迎的選擇之一。由Eclipse基金會管理完全開源提供高質量的、經過TCK技術兼容性工具包認證的構建對各個LTS版本的支持周期非常明確。對于新手和絕大多數場景我首推這個版本。Amazon Corretto亞馬遜提供的免費、多平臺的OpenJDK發行版。亞馬遜承諾為其提供長期支持并保證與Java SE標準的兼容性。如果你在AWS環境部署Corretto是個無縫銜接的好選擇。Azul ZuluAzul Systems提供的構建版同樣免費支持平臺非常廣泛包括ARM架構。Azul在JVM領域有深厚的技術積累其構建版本也值得信賴。Microsoft Build of OpenJDK微軟維護的發行版在Windows上集成體驗可能更好。對于本次安裝我們將以Eclipse Temurin JDK 11為例進行演示。它的下載頁面清晰版本齊全且沒有復雜的商業條款困擾。注意請務必從上述官方或可信的鏡像站點下載JDK。切勿從不明來源的小網站下載以免安裝包被篡改植入惡意軟件。3. 詳細實操步驟從下載到安裝驗證接下來我們進入實戰環節。我會分Windows、macOS和Linux三個主流操作系統來講解請根據你的電腦系統選擇對應的部分閱讀。3.1 Windows系統安裝指南Windows用戶數量最多圖形化安裝也相對直觀但環境變量配置是關鍵。3.1.1 下載安裝包打開瀏覽器訪問 Eclipse Adoptium 的官網。找到 JDK 11 的下載頁面。在版本選擇中找到 “Temurin 11 (LTS)”。在右側選擇你的操作系統Windows和架構通常是 x64除非你用的是非常老的32位電腦或新的ARM電腦。包類型選擇 “MSI Installer”。MSI安裝包的好處是它能自動為你配置系統環境變量比ZIP壓縮包方式更省心。點擊下載你會得到一個類似OpenJDK11U-jdk_x64_windows_hotspot_11.0.xx_x.msi的文件。3.1.2 運行安裝程序雙擊下載的.msi文件運行。如果系統彈出用戶賬戶控制UAC提示點擊“是”。安裝向導啟動后點擊“Next”。在下一個界面你可以選擇安裝路徑。強烈建議使用默認路徑通常是C:\Program Files\Eclipse Adoptium\jdk-11.0.xx.x-hotspot。這樣便于統一管理也避免后續配置環境變量時找不到目錄。記住這個路徑稍后可能會用到。繼續點擊“Next”安裝程序會開始復制文件。安裝過程很快通常一分鐘內即可完成。安裝完成后建議不要立即重啟通常也不需要。點擊“Finish”關閉向導。3.1.3 配置環境變量關鍵步驟這是Windows下最重要的一步目的是讓系統在任何目錄下都能識別java和javac命令。驗證安裝首先按Win R鍵輸入cmd打開命令提示符。輸入java -version并回車。如果你看到類似下面的輸出恭喜你安裝程序可能已經幫你配好了部分環境變量。openjdk version 11.0.xx 2024-xx-xx OpenJDK Runtime Environment Temurin-11.0.xxxx (build 11.0.xxxx) OpenJDK 64-Bit Server VM Temurin-11.0.xxxx (build 11.0.xxxx, mixed mode)再輸入javac -version。如果也能正確顯示版本號如javac 11.0.xx那么環境變量已完全配置成功你可以跳過后續配置步驟。手動配置如果需要如果javac命令提示“不是內部或外部命令”則需要手動配置JAVA_HOME和Path。設置JAVA_HOME在桌面或文件資源管理器右鍵點擊“此電腦”選擇“屬性”。點擊“高級系統設置” - “環境變量”。在“系統變量”區域點擊“新建”。變量名輸入JAVA_HOME。變量值輸入你的JDK安裝路徑例如C:\Program Files\Eclipse Adoptium\jdk-11.0.xx.x-hotspot。務必確保這個路徑指向的是JDK的根目錄里面有bin、lib等文件夾而不是更深的子目錄。更新Path變量在“系統變量”列表中找到Path變量選中并點擊“編輯”。點擊“新建”然后添加一條新記錄%JAVA_HOME%\bin。為了確保優先級你可以使用“上移”按鈕將%JAVA_HOME%\bin移動到列表頂部附近。逐一點擊“確定”關閉所有窗口。驗證配置非常重要關閉之前打開的所有命令提示符窗口。因為環境變量只在新的終端會話中生效。重新打開一個新的命令提示符cmd。依次輸入java -version和javac -version。兩者都應正確顯示JDK 11的版本信息。實操心得在Windows上使用MSI安裝器通常能自動配置好java命令的路徑即JRE部分但javac編譯器JDK部分的路徑有時仍需手動通過JAVA_HOME來添加。這就是為什么我們強調要同時檢查java和javac兩個命令。JAVA_HOME這個變量本身也被很多Java應用如Maven、Gradle、Tomcat、IDE所依賴單獨設置它是一舉多得的好習慣。3.2 macOS系統安裝指南macOS用戶可以通過多種方式安裝這里介紹最通用的兩種手動下載安裝包和使用包管理器Homebrew。3.2.1 方式一下載PKG安裝包推薦給新手下載同樣訪問 Eclipse Adoptium 網站選擇 macOS 和合適的架構Apple Silicon芯片選aarch64Intel芯片選x64。下載.pkg格式的安裝包。安裝雙擊下載的.pkg文件按照圖形化向導一步步操作即可安裝過程會像安裝普通Mac軟件一樣簡單。安裝程序會自動將JDK部署到/Library/Java/JavaVirtualMachines/temurin-11.jdk目錄下。驗證打開“終端”Terminal應用輸入java -version和javac -version。如果正確顯示Temurin 11的信息則安裝成功。macOS的安裝包通常會自動處理好路徑無需手動配置環境變量。3.2.2 方式二使用Homebrew安裝推薦給開發者如果你已經安裝了HomebrewmacOS上強大的包管理器那么安裝JDK將變得異常簡單和統一。查找可用版本在終端中執行brew search openjdk你可以看到所有可用的OpenJDK版本。安裝Temurin 11執行以下命令brew install --cask temurin11命令中的--cask表示這是一個需要圖形化安裝的軟件包如瀏覽器、編輯器對于JDKHomebrew會下載pkg并自動安裝。驗證安裝完成后重啟終端或打開一個新的終端標簽頁輸入java -version驗證。注意事項在macOS上可能會預裝舊版本的Java。通過上述方式安裝后新JDK的路徑會自動加入系統環境。如果遇到命令沖突可以通過export PATH命令臨時調整路徑或使用jenv這類工具來管理多個JDK版本。3.3 Linux系統安裝指南Linux發行版眾多安裝方式也多樣。這里以最常見的基于Debian/Ubuntu和基于RHEL/CentOS/Fedora的發行版為例。3.3.1 通用方法下載壓縮包配置適用于所有發行版這種方法最直接不依賴特定的包管理器。下載從Eclipse Adoptium網站下載對應Linux架構的.tar.gz壓縮包例如x64 Linux。解壓打開終端切換到下載目錄使用tar命令解壓到你想要的目錄通常建議是/usr/lib/jvm或/opt下。sudo mkdir -p /usr/lib/jvm # 如果目錄不存在則創建 sudo tar -xzf OpenJDK11U-jdk_x64_linux_hotspot_11.0.xx_x.tar.gz -C /usr/lib/jvm解壓后會生成一個類似jdk-11.0.xxxx的文件夾。配置環境變量編輯當前用戶的~/.bashrc文件如果你使用Bash或~/.zshrc如果你使用Zsh。nano ~/.bashrc在文件末尾添加以下內容請根據實際路徑修改export JAVA_HOME/usr/lib/jvm/jdk-11.0.xxxx export PATH$JAVA_HOME/bin:$PATH保存并退出編輯器。使配置生效執行source ~/.bashrc讓配置立即在當前終端生效或直接關閉終端重新打開。驗證執行java -version和javac -version。3.3.2 使用包管理器安裝以Ubuntu為例對于Ubuntu及其衍生版可以使用apt安裝OpenJDK。更新包索引sudo apt update安裝JDK 11sudo apt install openjdk-11-jdk驗證安裝完成后系統已自動配置好。直接運行java -version檢查。對于RHEL/CentOS/Fedora可以使用yum或dnfsudo dnf install java-11-openjdk-devel。踩坑提醒在Linux上通過包管理器安裝的OpenJDK其安裝路徑可能比較分散例如java命令在/usr/bin而庫文件在別處。JAVA_HOME通常會被自動設置為像/usr/lib/jvm/java-11-openjdk-amd64這樣的路徑。如果不確定可以使用update-alternatives --config java命令來查看和管理系統默認的Java版本并從中找到JAVA_HOME的路徑。4. 集成開發環境IDE配置驗證安裝配置好系統環境后我們還需要確保IDE能正確識別并使用這個JDK。這是將環境投入實際開發的關鍵一步。4.1 IntelliJ IDEA 配置IDEA對JDK的識別通常很智能但手動指定一次可以避免后續項目配置的混亂。打開IntelliJ IDEA如果是新建項目在“Project SDK”選擇處點擊“Add JDK...”。在彈出的窗口中導航到你的JDK安裝根目錄例如C:\Program Files\Eclipse Adoptium\jdk-11.0.xx.x-hotspot或/Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home。選中后點擊“OK”。IDEA會自動識別出JDK版本和所有類庫。之后創建新項目或打開現有項目時都可以在項目設置中指定使用這個SDK。4.2 Eclipse 配置打開Eclipse進入菜單Window-Preferences。在左側導航樹中找到Java-Installed JREs。點擊右側的 “Add...”選擇 “Standard VM”點擊 “Next”。在 “JRE home” 字段點擊 “Directory...” 并選擇你的JDK安裝根目錄注意是包含bin和lib的根目錄不是bin目錄本身。Eclipse會自動填充其他信息。為其取一個名字如 “Temurin-11”點擊 “Finish” 并勾選它作為默認JRE。4.3 Visual Studio Code 配置VS Code通過擴展來支持Java。確保已安裝 “Extension Pack for Java”。打開一個Java項目文件夾。按下CtrlShiftP(Windows/Linux) 或CmdShiftP(macOS) 打開命令面板。輸入 “Java: Configure Java Runtime”然后選擇它。在彈出的界面中你可以看到當前檢測到的所有JDK。如果剛安裝的JDK 11沒有出現可以點擊 “Download JDK...” 旁邊的齒輪圖標然后選擇 “Edit ‘java.home’ setting”在用戶設置中手動指定java.home的路徑。在IDE中成功配置并編譯運行一個簡單的 “Hello World” 程序是整個安裝過程的最終驗收標準。5. 進階配置與常見問題深度排查環境配好了但實際開發中總會遇到一些“坑”。這里我總結幾個高頻問題及其解決方案。5.1 多版本JDK共存與管理開發中經常需要在不同版本的JDK間切換。粗暴地修改系統環境變量不是好辦法。Windows/macOS/Linux通用工具使用SDKMAN!(對于macOS/Linux) 或類似工具。SDKMAN! 是一個用于管理多個SDK版本的工具可以非常方便地安裝、切換、列出和卸載JDK版本。安裝后一條命令sdk install java 11.0.xx-tem即可安裝指定版本sdk use java 11.0.xx-tem可在當前Shell中切換。macOS除了SDKMAN!還可以使用jenv。它可以全局或按目錄設置Java版本非常靈活。Windows可以手動設置不同項目使用不同的JDK通過IDE配置或者編寫不同的批處理腳本(.bat)來臨時設置PATH和JAVA_HOME。5.2 環境變量配置失效的終極檢查清單當java或javac命令不生效時按以下順序排查路徑是否正確首先檢查JAVA_HOME變量值是否指向了正確的、包含bin文件夾的JDK根目錄。一個常見的錯誤是指向了錯誤的子目錄或JRE目錄。Path變量是否包含確認Path變量中是否包含了%JAVA_HOME%\binWindows或$JAVA_HOME/binmacOS/Linux。終端會話是否更新修改環境變量后必須關閉所有舊的命令行窗口或終端標簽頁重新打開一個新的。環境變量只在進程啟動時加載。命令優先級問題在終端輸入which javamacOS/Linux或where javaWindows查看系統實際執行的是哪個路徑下的java命令。可能有一個舊的、優先級更高的Java路徑在Path中排在了前面。用戶變量 vs 系統變量Windows如果你在“用戶變量”中設置了JAVA_HOME和Path那么只有當前登錄用戶生效。在“系統變量”中設置則對所有用戶生效。確保你沒有在沖突的位置設置。5.3 安裝后IDE無法識別或編譯錯誤IDE緩存IDE有自身的JDK緩存和索引。嘗試以下操作IDEA:File-Invalidate Caches and Restart...Eclipse: 關閉項目再重新打開或者Project-Clean...項目特定配置確保你的項目模塊Module或構建路徑Build Path中指定的JDK版本與你安裝的版本一致。在IDEA中檢查File-Project Structure在Eclipse中檢查項目屬性中的Java Build Path和Java Compiler。構建工具配置如果你使用Maven或Gradle它們有自己指定的JDK版本。檢查pom.xml中的maven.compiler.source和maven.compiler.target或Gradle構建文件中的sourceCompatibility和targetCompatibility。同時確保Maven或Gradle本身運行在正確的JDK上可通過mvn -v或gradle --version查看。5.4 關于“JAVA_HOME”的深入理解JAVA_HOME這個變量不僅僅是給命令行用的。許多Java生態工具都重度依賴它Apache Tomcat: 啟動腳本通過JAVA_HOME來找到Java執行環境。Apache Maven:mvn腳本會檢查JAVA_HOME來決定用哪個JDK來運行Maven本身和編譯項目。Gradle: 同樣會使用JAVA_HOME或系統路徑中的java命令。Jenkins, Elasticsearch, Kafka等眾多基于Java的中間件和服務其啟動腳本中都會尋找JAVA_HOME。因此正確設置JAVA_HOME是搭建整個Java開發、運維環境的基礎中的基礎。它應該始終指向一個完整的JDK目錄而不是JRE目錄因為很多工具需要用到JDK中的工具如javac,jps,jstack等。6. 從配置到實踐你的第一個JDK 11程序理論說再多不如動手跑一行代碼。讓我們用最原始的方式感受一下JDK 11的環境是否真正就緒。編寫代碼在任何你喜歡的位置例如桌面新建一個文本文件命名為HelloJava11.java。用記事本或任何文本編輯器打開輸入以下代碼public class HelloJava11 { public static void main(String[] args) { // JDK 10 的局部變量類型推斷 var message Hello, JDK 11!; System.out.println(message); } }注意這里我們特意使用了JDK 10引入的var關鍵字這是JDK 11支持的特性。編譯打開命令行終端使用cd命令切換到存放HelloJava11.java文件的目錄。然后執行編譯命令javac HelloJava11.java如果環境配置正確這個命令會靜默執行并在同目錄下生成一個HelloJava11.class的字節碼文件。運行繼續在命令行中執行運行命令java HelloJava11你應該會看到終端輸出Hello, JDK 11!。如果以上步驟成功那么恭喜你你的JDK 11開發環境已經100%配置成功并且能夠支持新的語言特性。這個過程雖然簡單但它完整地驗證了javac編譯器、java運行時以及核心類庫都工作正常。走到這一步你已經成功跨越了Java開發的第一道門檻。一個穩定、可靠的開發環境是后續所有學習、編碼和調試的基礎。記住遇到問題多檢查路徑、多驗證命令、善用-version這類診斷命令大部分環境問題都能迎刃而解。JDK 11的世界已經為你打開接下來就是去探索更廣闊的Java生態了。