尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

JDK 11 安装与卸载全攻略:跨平台环境管理与多版本共存实践

JDK 11 安装与卸载全攻略:跨平台环境管理与多版本共存实践 1. 从一次环境冲突说起为什么需要精确管理JDK版本最近在帮一个同事排查一个老项目启动失败的问题现象很典型本地开发环境一切正常但一到预发布服务器上项目就死活启动不起来日志里抛出一个UnsupportedClassVersionError。相信很多Java开发者都遇到过类似的场景。问题的根源往往就出在Java运行环境上——本地用的是JDK 11编译而服务器上可能还残留着JDK 8甚至更老的版本。这个看似简单的“版本不匹配”问题背后牵扯到的是Java环境管理的混乱。对于开发者尤其是需要维护多个历史项目的开发者而言机器上同时存在多个JDK版本是常态。但如何干净地安装一个新版本比如JDK 11又如何彻底、安全地卸载一个旧版本避免残留文件导致的环境污染却是一个容易被忽略但又至关重要的基本功。很多人习惯从官网下载一个安装包一路“下一步”或者用包管理器apt-get install一下了事。然而这种粗放式的管理正是未来各种诡异问题的温床。今天我就结合自己多次“踩坑”和“填坑”的经验详细记录一下在主流操作系统Windows、macOS、Linux上如何像外科手术般精准地安装和卸载JDK 11并建立起清晰的环境管理习惯。2. JDK 11的选型与下载避开第一个坑在动手安装之前选择一个合适的JDK发行版是第一步这里面的门道比想象中要多。自从Oracle调整了JDK的授权协议后社区涌现出了多个优秀的开源发行版它们通常提供更宽松的许可和长期支持。2.1 主流JDK发行版对比目前对于JDK 11这个LTS长期支持版本我主要推荐以下两个发行版Eclipse Temurin由Adoptium社区原AdoptOpenJDK提供是目前最受社区欢迎的选择之一。它完全开源提供了经过严格兼容性测试的构建并且承诺对LTS版本提供长期更新。对于绝大多数生产和个人开发环境Temurin都是安全、可靠的首选。Amazon Corretto亚马逊提供的免费、多平台、生产就绪的OpenJDK发行版。亚马逊自身庞大的服务生态都在使用Corretto其稳定性和性能经过了充分验证。它也提供长期支持是另一个非常值得信赖的选择。至于Oracle官方的JDK虽然也可以下载但其用于商业生产的许可条款需要仔细阅读。对于学习和一般开发使用上述开源发行版能避免潜在的许可风险。2.2 实操找到正确的下载链接以Eclipse Temurin为例我们演示如何找到正确的JDK 11安装包。访问 Eclipse Temurin官网 。在版本选择中找到“11”。注意JDK 11有多个更新版本如11.0.22建议选择最新的更新版本它包含了最新的安全补丁和错误修复。选择你的操作系统和架构。对于Windows通常选择x64 MSI Installer或x64 ZIP对于macOS选择x64 DMG InstallerIntel芯片或aarch64 DMG InstallerApple Silicon对于Linux选择对应的包格式如.deb(Debian/Ubuntu) 或.rpm(RedHat/CentOS/Fedora)。下载JDK包而不是JRE。JDK包含了开发所需的全部工具如编译器javac而JRE仅包含运行环境。注意尽量避免从第三方不明站点下载JDK以防捆绑恶意软件或版本被篡改。始终从项目官网或可信的镜像站下载。3. Windows系统下的安装与深度卸载Windows系统由于其图形化安装和注册表等机制安装简单但卸载时容易留下“尾巴”。3.1 安装JDK 11对于Windows我强烈推荐使用.msi安装包而不是.zip压缩包。运行下载的.msi安装程序。在安装向导中最关键的一步是“设置安装路径”。默认路径通常是C:\Program Files\Eclipse Adoptium\jdk-11.0.xx.x-hotspot。我建议在此处进行自定义例如改为D:\Java\jdk-11.0.xx。这样做有两个巨大好处一是路径中不含空格和特殊字符避免某些古老脚本或工具出问题二是将所有Java版本集中在一个自定义目录下如D:\Java\便于后续管理和查找。继续点击“下一步”直至安装完成。.msi安装器会自动在系统环境变量PATH中添加该JDK的bin目录并设置JAVA_HOME系统变量较新版本的安装包会做这件事但最好自己验证。3.2 验证安装与环境变量配置安装完成后需要验证是否成功。打开一个新的命令提示符CMD或 PowerShell。必须新开一个因为环境变量的更改不会立即反映在已打开的终端里。依次执行以下命令java -version javac -version如果正确显示了JDK 11的版本信息说明安装基本成功。接下来是手动配置环境变量这是理解Java环境工作的关键一步即使安装器帮你做了也建议检查一遍。右键点击“此电脑” - “属性” - “高级系统设置” - “环境变量”。新建系统变量如果不存在变量名JAVA_HOME变量值你的JDK安装目录例如D:\Java\jdk-11.0.xx编辑系统变量Path点击“编辑” - “新建”添加一条新记录%JAVA_HOME%\bin重要技巧将%JAVA_HOME%\bin上移到Path列表的顶部。这能确保系统优先使用我们刚安装的JDK 11而不是其他可能存在的旧版本。3.3 彻底卸载JDK 11在Windows上仅仅删除安装目录是远远不够的注册表和环境变量中的残留会导致新版本安装或使用出问题。正确的卸载流程如下通过控制面板卸载首选打开“设置” - “应用” - “应用和功能”。在列表中找到 “Eclipse Adoptium JDK 11” 或类似名称的程序点击“卸载”。这是最干净的方式能调用程序自带的卸载逻辑清理注册表等信息。手动清理残留如果控制面板没有或卸载不干净删除安装目录前往你自定义的安装路径如D:\Java\jdk-11.0.xx或默认路径删除整个JDK文件夹。清理环境变量再次打开“环境变量”设置。删除系统变量中名为JAVA_HOME的变量如果它是专门为这个JDK 11设置的。编辑Path变量查找并删除指向该JDKbin目录的条目例如D:\Java\jdk-11.0.xx\bin或%JAVA_HOME%\bin。清理注册表高级操作谨慎按Win R输入regedit打开注册表编辑器。导航到HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft。如果你确定不再使用任何Oracle或Adoptium的Java可以删除整个JavaSoft键。更安全的做法是只删除其下的JDK或JRE子键中与特定版本相关的条目。操作注册表前务必先备份验证卸载打开新的CMD运行where java。这个命令会列出所有在PATH中找到的java.exe路径。如果之前卸载的JDK路径仍然出现说明PATH清理不彻底。运行java -version应该会提示“不是内部或外部命令”或者显示为其他残留的Java版本。4. macOS系统下的安装与清理macOS系统推荐使用.dmg安装包或通过包管理器Homebrew安装管理起来相对清晰。4.1 使用安装包.dmg安装双击下载的.dmg文件将其挂载。将里面的.pkg安装程序拖到“应用程序”文件夹的快捷方式上或直接双击.pkg运行。跟随图形向导完成安装。安装程序会将JDK安装到/Library/Java/JavaVirtualMachines/目录下例如/Library/Java/JavaVirtualMachines/temurin-11.jdk/。这个目录结构是macOS管理多版本JDK的标准位置非常规范。4.2 使用Homebrew安装推荐给开发者如果你已经安装了Homebrew这是最便捷的方式。打开终端Terminal。执行以下命令# 首先添加Eclipse Adoptium的tap软件源 brew tap homebrew/cask-versions # 然后安装Temurin JDK 11 brew install --cask temurin11Homebrew会自动完成下载、安装和链接步骤。安装位置同样在/Library/Java/JavaVirtualMachines/。4.3 管理多版本与验证macOS自带了一个方便的版本管理命令/usr/libexec/java_home。列出所有已安装的JDK/usr/libexec/java_home -V获取特定版本如11的JAVA_HOME路径/usr/libexec/java_home -v 11要切换当前终端使用的版本可以临时设置环境变量export JAVA_HOME$(/usr/libexec/java_home -v 11) export PATH$JAVA_HOME/bin:$PATH验证java -version应显示JDK 11信息。4.4 彻底卸载JDK在macOS上卸载关键在于找到所有相关文件。删除JDK主体JDK的核心文件位于/Library/Java/JavaVirtualMachines/。直接找到对应的temurin-11.jdk或adoptopenjdk-11.jdk目录将其拖入废纸篓并清空。检查并删除配置文件检查用户主目录下的shell配置文件如~/.bash_profile,~/.zshrc删除其中手动设置的与JDK 11相关的JAVA_HOME和PATH配置行。使用Homebrew安装的还可以运行brew uninstall --cask temurin11进行卸载。验证重启终端运行java -version。如果系统提示需要安装Java或者指向了其他版本说明卸载成功。运行echo $JAVA_HOME应返回空或指向其他版本。5. Linux系统下的安装与纯净移除Linux服务器是Java应用最常见的部署环境其安装方式多样但追求的是脚本化、自动化、无残留。5.1 使用包管理器安装以Ubuntu/Debian为例这是最简单的方法适合快速部署。# 更新包列表 sudo apt update # 安装JDK 11 (这里以OpenJDK为例Temurin可能需要添加第三方仓库) sudo apt install openjdk-11-jdk # 验证安装 java -version javac -version包管理器会自动处理依赖和update-alternatives链接。5.2 手动安装Tarball.tar.gz并设置环境对于需要更精细控制安装位置和版本的生产环境手动安装是更好的选择。使用wget或curl下载.tar.gz压缩包。解压到目标目录通常选择/usr/lib/jvm/或/opt/。sudo tar -xzf jdk-11.0.xx_linux-x64_bin.tar.gz -C /usr/lib/jvm/设置系统级环境变量。编辑/etc/profile或更好的是在/etc/profile.d/目录下创建一个独立的脚本文件例如java.shsudo vim /etc/profile.d/java.sh在文件中添加export JAVA_HOME/usr/lib/jvm/jdk-11.0.xx export PATH$JAVA_HOME/bin:$PATH使配置生效source /etc/profile或重新登录。使用update-alternatives命令在系统范围内注册和切换Java版本这是Linux上管理多版本Java的黄金标准sudo update-alternatives --install /usr/bin/java java $JAVA_HOME/bin/java 1100 sudo update-alternatives --install /usr/bin/javac javac $JAVA_HOME/bin/javac 1100 # 可以通过以下命令交互式选择默认版本 sudo update-alternatives --config java sudo update-alternatives --config javac5.3 彻底卸载JDK在Linux上卸载的目标是移除所有相关文件、清理环境变量和update-alternatives链接。移除通过包管理器安装的JDKsudo apt remove --purge openjdk-11-jdk--purge参数会同时删除配置文件。移除手动安装的JDK删除安装目录sudo rm -rf /usr/lib/jvm/jdk-11.0.xx删除环境变量配置文件sudo rm /etc/profile.d/java.sh从update-alternatives中移除条目sudo update-alternatives --remove java $JAVA_HOME/bin/java sudo update-alternatives --remove javac $JAVA_HOME/bin/javac注意执行此命令前需要知道$JAVA_HOME的具体值或者使用update-alternatives --list java查看完整路径后再移除清理用户级配置检查~/.bashrc,~/.bash_profile,~/.profile等文件删除相关的export行。验证执行which java,which javac应返回空或指向其他版本。执行java -version确认。6. 多版本JDK共存与管理的最佳实践一台机器上存在多个JDK版本是开发、测试和运维的刚性需求。混乱的管理是万恶之源清晰的管理策略则能提升效率。6.1 环境变量管理的核心JAVA_HOME与PATH优先级这是所有管理方案的基石。原理很简单JAVA_HOME指向一个特定版本JDK的安装根目录。各种构建工具Maven、Gradle、应用服务器Tomcat都通过读取这个变量来定位Java。PATH系统查找可执行文件的路径列表。我们将%JAVA_HOME%\binWindows或$JAVA_HOME/binUnix加入PATH并且确保它位于最前面。这样在命令行输入java时系统就会使用JAVA_HOME指向的版本。最佳实践不要在系统环境变量里写死JAVA_HOME。而是通过脚本或工具动态设置。对于Windows可以编写不同的.bat脚本对于macOS/Linux则在shell配置文件.zshrc,.bashrc中使用函数或工具切换。6.2 推荐使用版本管理工具手动切换环境变量容易出错强烈推荐使用专门的工具Windows: 使用jenv的Windows版本或者更轻量的scoop包管理器。scoop安装JDK后可以通过scoop reset命令轻松切换全局版本。scoop bucket add java scoop install temurin11-jdk scoop install temurin8-jdk scoop reset temurin11-jdk # 切换到11macOS:jenv是绝对的首选。它可以管理多个JDK并支持全局、目录.java-version文件和shell会话三个级别的版本设置。# 安装jenv后 jenv add /Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home jenv global 11.0 # 设置全局版本 cd /path/to/project-requires-8 jenv local 1.8 # 在此目录下自动切换为JDK 8Linux: 除了系统自带的update-alternativesjenv同样适用或者使用sdkman。# 使用sdkman sdk install java 11.0.xx-tem sdk use java 11.0.xx-tem sdk default java 11.0.xx-tem6.3 项目级锁定构建工具的配置在项目层面锁定JDK版本可以确保团队成员和环境的一致性。Maven: 在pom.xml中配置maven-compiler-plugin。plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-compiler-plugin/artifactId version3.11.0/version configuration source11/source target11/target /configuration /pluginGradle: 在build.gradle中设置sourceCompatibility和targetCompatibility。sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11这样即使用户的默认JDK是其他版本构建工具也会尝试使用指定的版本来编译如果找不到会报错从而提醒开发者配置正确的环境。7. 安装后的关键验证与常见问题排错安装完成并配置好环境变量后不要以为万事大吉了。进行系统性的验证才能提前发现潜在问题。7.1 基础验证三部曲版本验证java -version和javac -version输出必须一致且是你预期的版本如11.0.22。如果不一致说明PATH中混入了其他版本的Java。路径验证which java(Linux/macOS) 或where java(Windows)查看最终指向的java可执行文件路径。这个路径应该在JAVA_HOME/bin目录下。echo $JAVA_HOME(Linux/macOS) 或echo %JAVA_HOME%(Windows)输出应该就是你设置的JDK安装根目录。编译与运行验证创建一个最简单的HelloWorld.java文件进行测试。public class HelloWorld { public static void main(String[] args) { System.out.println(Hello, JDK 11!); } }执行javac HelloWorld.java java HelloWorld如果能正确编译并输出说明JDK安装完全成功。7.2 典型问题与排查思路问题一‘java‘ 不是内部或外部命令(Windows) 或command not found: java(Unix)排查检查PATH环境变量。确保%JAVA_HOME%\bin或$JAVA_HOME/bin已正确添加并且没有拼写错误。在Windows上特别注意用户变量和系统变量PATH的合并问题有时需要重启终端或电脑。问题二版本号与预期不符排查运行where java或which -a java这会列出所有找到的java命令路径。列表中的第一个就是当前生效的。如果它不是你的JDK 11说明有另一个Java路径在PATH中更靠前。需要调整PATH顺序或将其他不需要的Java路径移除。问题三JAVA_HOME设置正确但某些IDE或工具仍报错排查IDE如IntelliJ IDEA、Eclipse和构建工具Maven、Gradle通常有自己独立的JDK配置它们不会完全依赖系统的JAVA_HOME。IntelliJ IDEA去File - Project Structure - Project - SDK检查并添加正确的JDK 11。Maven运行mvn -v检查Maven自己使用的Java版本。可以在~/.mavenrc(Unix) 或%USERPROFILE%\.mavenrc(Windows) 中设置JAVA_HOME来强制Maven使用特定JDK。经验永远不要假设系统环境变量能解决所有问题。对于关键工具显式地在工具内部配置其所需的JDK路径是最可靠的做法。问题四卸载旧版本后新版本安装失败或运行异常排查这几乎总是环境变量残留导致的。按照前面卸载章节的步骤仔细检查PATH和在Windows上注册表。一个被忽略的角落是用户目录下的配置文件比如Windows的C:\Users\你的用户名\下可能存在的.mavenrc或其他脚本。在Linux/macOS上仔细检查所有shell配置文件.bashrc,.bash_profile,.zshrc,.profile。
返回列表