2025年JDK安装配置全指南:从选型到多版本管理
1. 为什么2025年了JDK安装还需要一个“教程”每次看到“JDK安装教程”这个标题很多老鸟可能会嗤之以鼻不就是下载、安装、配环境变量吗有什么好讲的但恰恰是这种“简单”的事情每年都坑了无数新手甚至一些有经验的开发者在切换新版本、新系统时也会翻车。2025年的JDK生态和几年前已经大不相同Oracle的许可证政策几经调整OpenJDK的发行版百花齐放还有GraalVM、Shenandoah GC等新特性带来的新选择。一个“简洁明了”的教程核心价值不在于复述点击“下一步”的步骤而在于帮你理清“我到底该选哪个版本”、“为什么我的java -version命令不生效”以及“装完之后怎么验证才算真正成功”这些真正卡住人的问题。我自己带团队、做技术分享时发现至少一半的Java环境问题都出在最初的安装和配置环节。路径错误、版本冲突、环境变量覆盖、权限不足……这些看似低级的问题消耗了大量的调试时间。所以这篇教程的目标是不仅让你能把JDK装上更要让你理解每一个操作背后的逻辑从而在任何系统上都能举一反三彻底解决Java环境配置的玄学问题。我们会聚焦于目前2025年最主流、最推荐的选择并提供Windows、macOS和Linux三大平台的实操细节。2. JDK选型指南在OpenJDK的丛林里找到你的路十年前装JDK几乎等同于去Oracle官网下载。现在打开OpenJDK官网你会发现一堆提供构建的厂商Adoptium原AdoptOpenJDK、Amazon Corretto、Microsoft Build of OpenJDK、Azul Zulu、Oracle OpenJDK等等。选择困难症瞬间就犯了。2.1 主要发行版对比与推荐对于绝大多数普通开发者和企业应用我的首要推荐是Eclipse Adoptium Temurin。理由如下中立与开源由Eclipse基金会管理避免了单一商业公司的绑定社区驱动透明度高。长期支持LTS其提供的LTS版本如JDK 17, 21, 以及未来的JDK 25会获得数年的安全更新这对于生产环境至关重要。2025年JDK 21和JDK 17依然是LTS主力而JDK 23非LTS可能已发布但生产环境慎用。广泛的平台支持覆盖从x64到ARM架构从Windows、Linux到macOS包括Apple Silicon甚至还有Alpine Linux的musl版本。清晰的许可证使用GPLv2 with Classpath Exception商业使用友好。为什么不首选Oracle JDK自JDK 17起Oracle虽然也提供了免费的GPL许可版本但其“Oracle No-Fee Terms and Conditions”NFTC对于某些生产环境使用仍有条款需要仔细阅读。而Oracle JDK的付费订阅版则提供额外支持。对于不想研究法律条款的团队选择Adoptium Temurin这类完全社区驱动的版本更省心。其他发行版也有其特定场景Amazon Corretto亚马逊出品在AWS环境或深度使用AWS服务的团队中集成度好同样是免费长期支持。Microsoft Build of OpenJDK针对Windows和Azure环境有优化微软系开发者的好选择。Azul Zulu提供非常古老的版本支持如果你需要维护JDK 8甚至更早的项目Zulu可能是少数仍提供商业支持的选项。注意请务必从上述项目的官方网站或可信的镜像站下载。切勿从不明来源下载安装包以防植入恶意代码。2.2 版本选择LTS还是最新特性版这是另一个关键决策点。JDK 21 (LTS)2023年9月发布是当前最新的LTS版本。引入了虚拟线程Virtual Threads、分代ZGC、记录模式等革命性特性。对于2025年启动的新项目JDK 21应作为默认起点。它的性能、内存管理和编程模型都代表了现代Java的方向。JDK 17 (LTS)2021年发布上一个LTS。已经非常稳定生态支持完善。如果你的团队或依赖库尚未完全迁移到JDK 21JDK 17依然是极其可靠的选择。JDK 23 (或当时的最新非LTS版)非LTS版本每半年发布一次包含最新的语言和JVM特性。仅推荐给热衷于尝鲜的开发者、用于个人学习或可以快速迭代的非核心项目。生产环境强烈不建议使用非LTS版本因为其支持周期很短通常只有6个月。对于新手我建议直接安装Adoptium Temurin JDK 21。一方面可以学习最现代的Java特性另一方面它拥有长期支持足以用于严肃的学习和项目开发。3. 分平台安装实操避开那些“默认”的坑假设我们已经决定下载Eclipse Adoptium Temurin JDK 21。接下来我们分平台操作。我将以Windows 11、macOS Sonoma (Apple Silicon)和Ubuntu 22.04 LTS为例。3.1 Windows平台告别安装程序拥抱解压即用Windows用户最习惯的是.exe或.msi安装程序。但这里我推荐一个更灵活、更干净的方法下载.zip压缩包手动解压并配置。为什么不用安装程序路径自由安装程序通常会把JDK装到C:\Program Files\Java下这个路径包含空格虽然现代工具大多能处理但在一些古老的脚本或配置中仍可能引发问题。手动解压你可以放在任何无空格路径例如D:\Dev\Java\jdk-21。多版本管理手动解压可以轻松地在多个JDK版本间切换只需修改环境变量指向不同的目录即可。安装程序会修改注册表有时会造成版本管理的混乱。干净卸载直接删除文件夹即可无残留。步骤详解下载访问 Adoptium Temurin官网 选择版本JDK 21、操作系统Windows、架构x64或AArch64下载.zip包。解压将下载的OpenJDK21U-jdk_x64_windows_hotspot_21.0.x_x.zip解压到你喜欢的目录例如D:\Dev\Java\。解压后会得到一个类似jdk-21.0.xxx的文件夹。为了便于管理我通常将其重命名为jdk-21。配置环境变量关键步骤按Win S搜索“环境变量”选择“编辑系统环境变量”。点击“环境变量(N)...”。在“系统变量”区域找到并选中Path变量点击“编辑”。点击“新建”添加你的JDK的bin目录的完整路径例如D:\Dev\Java\jdk-21\bin。重要技巧使用“上移”按钮将这个新条目移动到Path列表的顶部。这可以确保当你系统中有多个Java版本时命令行优先使用这个版本。逐一点击“确定”关闭所有窗口。验证打开一个新的命令提示符CMD或 PowerShell必须新开窗口环境变量才会生效输入java -version你应该看到类似下面的输出其中包含“Eclipse Temurin”和版本号“21”openjdk version 21.0.3 2024-10-15 LTS Eclipse Temurin(TM) Runtime Environment (build 21.0.39-LTS) Eclipse Temurin(TM) 64-Bit Server VM (build 21.0.39-LTS, mixed mode, sharing)再输入javac -version应输出javac 21.0.3。踩坑提示很多人在修改Path后直接在已打开的旧命令行窗口里验证结果发现不生效以为是配置错了。环境变量修改只对新启动的终端进程生效这是一个非常常见的“坑”。3.2 macOS平台Homebrew是首选手动安装备选对于macOS用户特别是使用Apple Silicon (M1/M2/M3) Mac的用户安装体验已经非常统一。首选方案使用Homebrew如果你已经安装了HomebrewmacOS包管理器那么安装JDK简单到令人发指# 安装 Adoptium Temurin JDK 21 brew install --cask temurin这条命令会自动下载、安装并配置好最基本的路径。安装后通常java命令即可用。验证与版本管理 安装后打开终端输入java -version验证。Homebrew通常会把可执行文件链接到标准路径。如果你需要安装多个版本可以使用brew install --cask temurin8、temurin11、temurin17等然后通过brew link或jenv等工具管理。手动安装方案 如果你不想用Homebrew也可以从Adoptium官网下载.pkg安装包或.tar.gz压缩包。.pkg安装包双击安装会安装到/Library/Java/JavaVirtualMachines/temurin-21.jdk/目录下。系统会自动为你配置一个/usr/libexec/java_home的链接这是macOS管理多版本Java的传统方式。.tar.gz压缩包解压后放到你喜欢的目录例如~/Library/Java/JavaVirtualMachines/。然后你需要手动配置环境变量编辑~/.zshrc如果你使用默认的zsh shell文件# 编辑配置文件 nano ~/.zshrc # 在文件末尾添加假设解压路径为 /Users/yourname/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home export JAVA_HOME/Users/yourname/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home export PATH$JAVA_HOME/bin:$PATH保存后执行source ~/.zshrc使配置生效。检查当前使用的Java 在macOS上你可以使用以下命令查看所有已安装的JDK和当前使用的版本/usr/libexec/java_home -V这个命令会列出所有已知的JDK安装及其路径。3.3 Linux平台包管理器与手动安装的权衡Linux发行版众多这里以最流行的Ubuntu/Debian系为例。方案一使用APT包管理器可能版本较旧Ubuntu的官方仓库通常包含OpenJDK包但版本可能不是最新的LTS。sudo apt update sudo apt install openjdk-21-jdk安装后系统会自动配置好java和javac命令。你可以通过update-alternatives来管理多个版本sudo update-alternatives --config java这种方法最简单但仓库中的JDK发行版可能是其他供应商如Ubuntu自己构建的而非Adoptium Temurin。方案二手动下载.tar.gz包推荐版本可控这是我更推荐的方式因为它能让你精确控制版本和发行版。从Adoptium官网下载Linux版的.tar.gz包例如针对x64的OpenJDK21U-jdk_x64_linux_hotspot_21.0.x_x.tar.gz。在终端中操作# 1. 移动到你希望安装的目录通常为 /usr/lib/jvm 或 /opt sudo mkdir -p /usr/lib/jvm cd /usr/lib/jvm # 2. 解压下载的包 (假设下载到 ~/Downloads) sudo tar -xzf ~/Downloads/OpenJDK21U-jdk_x64_linux_hotspot_21.0.x_x.tar.gz # 3. 为了方便重命名目录 sudo mv jdk-21.0.xxx jdk-21-temurin # 4. 配置系统级环境变量 (为所有用户) sudo nano /etc/profile.d/java.sh在打开的java.sh文件中添加export JAVA_HOME/usr/lib/jvm/jdk-21-temurin export PATH$JAVA_HOME/bin:$PATH保存退出后赋予执行权限并立即生效对当前用户sudo chmod x /etc/profile.d/java.sh source /etc/profile.d/java.sh验证新开一个终端执行java -version和javac -version。实操心得在Linux服务器上部署时我强烈建议使用手动安装方案。这确保了环境的一致性不会因为系统自动更新而意外升级JDK版本这对于生产环境的稳定性至关重要。将JDK放在/usr/lib/jvm/下是Linux系统的惯例方便管理。4. 核心配置详解理解JAVA_HOME与Path的协作安装完JDK后JAVA_HOME和Path是两个最核心的环境变量。很多新手配置不成功就是因为没理解它们的关系。4.1 JAVA_HOME指向JDK的“家”JAVA_HOME是一个环境变量它的值应该设置为JDK安装目录的根路径。Windows示例JAVA_HOMED:\Dev\Java\jdk-21macOS/Linux示例JAVA_HOME/usr/lib/jvm/jdk-21-temurin它有什么用很多Java相关的工具、应用服务器如Tomcat、Jenkins、构建工具如Maven、Gradle以及IDE如IntelliJ IDEA、Eclipse都会主动读取JAVA_HOME这个变量来定位Java开发工具包的位置。如果你只配置了Path而没设JAVA_HOME这些工具可能无法正常工作或者会使用它们自己找到的另一个可能不正确的Java版本。如何设置Windows在“系统环境变量”中新建一个变量变量名为JAVA_HOME变量值为你的JDK路径不带bin目录。macOS/Linux在shell配置文件.zshrc,.bashrc,/etc/profile.d/*.sh中添加export JAVA_HOME你的路径。4.2 Path让系统找到java命令Path变量告诉操作系统当你在命令行输入一个命令如java或javac时应该去哪些目录里寻找这个命令的可执行文件。JDK的可执行文件java.exe,javac.exe,jar.exe等都位于其bin目录下。因此我们需要将%JAVA_HOME%\binWindows或$JAVA_HOME/binmacOS/Linux添加到Path变量中。协作流程你在终端输入java -version。系统查看Path变量列出的所有目录。系统在Path中包含的.../jdk-21/bin目录下找到了java这个可执行文件。系统执行它。同时一些脚本或工具可能会利用JAVA_HOME变量来定位相关的库文件如tools.jar不过在较新模块化JDK中已变化或头文件。4.3 验证配置是否真正生效配置完成后不要只满足于java -version。运行一个完整的检查脚本可以确保环境完全就绪# 检查JAVA_HOME echo $JAVA_HOME # macOS/Linux echo %JAVA_HOME% # Windows CMD $env:JAVA_HOME # Windows PowerShell # 检查java和javac是否来自同一JDK which java which javac # 在Windows上可以用 where java 和 where javac # 编译并运行一个简单的HelloWorld程序进行终极测试 # 1. 创建一个Test.java文件 cat HelloWorld.java EOF public class HelloWorld { public static void main(String[] args) { System.out.println(Hello, JDK 21 from Adoptium Temurin!); } } EOF # 2. 编译 javac HelloWorld.java # 3. 运行 java HelloWorld如果以上步骤都能成功并且输出预期的字符串那么恭喜你JDK安装与配置已经100%成功。5. 进阶话题多版本管理、IDE集成与常见故障排查5.1 如何优雅地管理多个JDK版本在实际开发中我们经常需要在不同项目间切换JDK版本。手动修改环境变量非常笨拙。Windows可以使用第三方工具如scoop或jabba。以scoop为例安装后管理JDK就像这样简单scoop bucket add java scoop install temurin21-jdk scoop install temurin17-jdk scoop reset temurin21-jdk # 切换使用JDK 21macOS除了Homebrewjenv是一个专为Java版本管理设计的强大工具。它可以全局、目录或shell会话级别切换JDK。brew install jenv # 将已安装的JDK添加到jenv jenv add /Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home jenv add /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home # 设置全局版本 jenv global 21 # 在特定目录下使用特定版本 cd ~/my-project-requires-17 jenv local 17Linux可以使用update-alternatives系统工具如前所述或者同样使用jenv。5.2 IDE集成以IntelliJ IDEA为例安装好JDK后需要在IDE中配置才能用于编译和运行项目。打开IntelliJ IDEA进入File-Project Structure(CtrlAltShiftS)。在Platform Settings-SDKs下点击-Add JDK。浏览并选择你的JDK安装目录例如D:\Dev\Java\jdk-21或/usr/lib/jvm/jdk-21-temurin。IDEA会自动识别版本信息。点击OK。在Project Settings-Project中将Project SDK和Project language level设置为刚才添加的JDK 21。这样你的项目就会使用指定的JDK 21进行构建和运行。你可以在同一个IDEA中配置多个SDK并为不同模块指定不同的SDK。5.3 常见故障排查清单即使按照教程操作有时也会遇到问题。这里是一个快速排查清单问题‘java’ 不是内部或外部命令也不是可运行的程序原因Path环境变量未正确配置或配置后未重启终端。解决检查Path中JDK的bin路径是否正确、完整。确保在新的命令提示符或终端窗口中测试。问题‘javac’ 不是内部或外部命令但java命令可用原因可能只安装了JRE运行时环境而不是完整的JDK开发工具包。JRE不包含编译器javac。解决确认你下载的是JDK如OpenJDK 21U-jdk而不是JRE。重新下载并安装完整的JDK。问题版本号不对显示的版本不是刚安装的21原因系统Path中存在多个Java路径且顺序不对。命令行找到了一个更早安装的Java。解决在Windows环境变量中将新JDK的bin路径上移到Path列表顶部。在macOS/Linux检查shell配置文件中PATH变量的设置确保$JAVA_HOME/bin在靠前的位置。使用which -a javaLinux/macOS或where javaWindows查看所有java命令的位置。问题IDE无法识别新安装的JDK原因IDE有自己缓存的SDK列表或配置文件。解决在IDE的SDK设置中手动添加JDK的安装根目录路径而不是依赖自动发现。重启IDE。问题在macOS上即使配置了JAVA_HOME某些脚本仍报错原因一些老旧的脚本或工具可能依赖于/usr/libexec/java_home命令的输出。解决确保你的JDK是通过.pkg安装或已通过jenv等工具正确注册到系统中。可以运行/usr/libexec/java_home -V查看是否包含你的JDK。安装和配置JDK是Java开发者的第一道门槛也是一个看似简单却充满细节的活儿。理解“为什么”要这样配置远比记住“怎么做”更重要。掌握了环境变量、路径和多版本管理的原理你就能从容应对各种环境下的挑战。从2025年的视角来看选择一款像Eclipse Adoptium Temurin这样有社区背书的LTS版本JDK并采用解压手动配置的方式能给你带来最大的灵活性和可控性。希望这篇超详细的“简洁”教程能帮你一劳永逸地搞定Java开发环境的基石。

相关新闻

如何高效发现与收藏小众精品网站:从寻宝到深度使用的完整指南

如何高效发现与收藏小众精品网站:从寻宝到深度使用的完整指南

1. 项目概述:在信息洪流中寻找独特的数字绿洲 每天打开浏览器,首页总是那几个耳熟能详的巨头网站,从搜索引擎到社交媒体,从新闻门户到视频平台,我们的数字足迹似乎被圈定在几个固定的“大广场”里。然而,互…

2026/10/20 17:47:30 阅读更多 →
大模型Token核心解析:从分词原理到提示词优化实战

大模型Token核心解析:从分词原理到提示词优化实战

1. 项目概述:重新认识AI世界的“原子”如果你刚开始接触大语言模型,比如ChatGPT或者Midjourney的提示词工程,你很可能被一个词搞懵过:Token。官方文档、技术博客里总在提它——“这个模型上下文长度是8K tokens”、“你的输入超出…

2026/10/21 5:12:11 阅读更多 →
构建AI数字副驾驶:多模态反馈与自动化通信机制的设计与实践

构建AI数字副驾驶:多模态反馈与自动化通信机制的设计与实践

1. 项目概述:当AI成为你的“副驾驶”最近在折腾各种AI工具和自动化脚本时,我总在想一个问题:我们花大量时间训练AI模型去写代码、画图、分析数据,但为什么我们和电脑本身的交互,还停留在“人手动操作,AI被动…

2026/10/20 12:01:00 阅读更多 →

最新新闻

Wireshark保存RTP包后变UDP?根因与修复方法详解

Wireshark保存RTP包后变UDP?根因与修复方法详解

你是不是也遇到过这种怪事:用Wireshark抓RTP包,明明实时预览的时候一切正常,顶部协议栏也明明白白写着“RTP”,但只要一保存文件再打开,RTP就变成了光秃秃的UDP。我之前排查一个语音网关的问题时,抓了一百多…

2026/10/21 5:12:04 阅读更多 →
AI事故频发的四大根因与系统防御策略

AI事故频发的四大根因与系统防御策略

1. 案例全景:十个引发广泛讨论的AI事故1.1 推荐算法放大虚假信息某大型内容平台曾发生一起标志性事件。一个不知名账号发布了一条完全虚构的所谓“重大新闻”,内容荒诞、错漏明显,但平台推荐引擎在几分钟内将它推送给数十万人。消息传到另一个…

2026/10/21 5:12:04 阅读更多 →
ADK-Python安全令牌传递机制:Agent身份穿越与防护实践

ADK-Python安全令牌传递机制:Agent身份穿越与防护实践

你们有没有遇到过这种情况:Agent 每执行一步都要去调第三方 API,令牌在工具函数里传了一圈,最后不知怎么就打到日志里了。我最早做多工具 Agent 的时候,就是这么把生产环境的 API Key 打满了一整个日志面板。标题里这个“Google A…

2026/10/21 5:12:04 阅读更多 →
Qt5下QFTP文件包接入实战:解决undefined reference与工程迁移

Qt5下QFTP文件包接入实战:解决undefined reference与工程迁移

简介:QT5移除了内置QFTP模块,使依赖FTP功能的开发者面临重新实现客户端能力的难题。这份资源正面向需要自建QT5 FTP模块的C开发者,提供一套可运行的QFTP实现,支持FTP连接、用户登录、服务器目录切换与列表获取,并留有扩…

2026/10/21 5:12:04 阅读更多 →
C++ union 的一种妙用法

C++ union 的一种妙用法

前言 union 是 C 时代留下来的少数几个「看起来简单、实际很容易用错」的语言设施之一。它的表面语义只有一句:所有成员共用同一块存储,同一时刻只有一个成员是「活的」。但「活的」这三个字在 C 里意味着对象的生命周期,而生命周期恰恰是很多…

2026/10/21 5:12:04 阅读更多 →
手写JSON解析器:从词法分析到语法树的编译原理实战

手写JSON解析器:从词法分析到语法树的编译原理实战

1. 从一段JSON文本到内存对象:解析器到底在做什么很多人第一次接触编译原理,都是从"写一个JSON解析器"开始的。这个选择很聪明——JSON的语法足够简单,简单到一页纸就能写完文法;但它又足够完整,完整到能覆盖…

2026/10/21 5:11:04 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →