Mac安装JDK 8完整指南:从下载到多版本管理
1. 项目概述为什么在Mac上安装JDK 8依然是刚需如果你刚拿到一台Mac准备开始写Java程序或者接手了一个老项目第一件事很可能就是安装JDK。而众多版本中JDK 8Java SE 8至今仍是企业级开发中绕不开的“钉子户”。这听起来有点反直觉毕竟Java都发展到JDK 21了为什么还要折腾一个2014年发布的版本原因很现实大量的生产系统尤其是金融、电信、传统企业软件其核心代码库依然稳定运行在JDK 8上。它的LTS长期支持特性、成熟的生态以及相对保守的语法让无数项目选择了“不升级就是最好的升级”。因此在Mac上正确安装和配置JDK 8不是怀旧而是应对真实工作环境的必备技能。然而在macOS上安装JDK 8的过程对于新手甚至有些经验的老手来说都可能是个小坑。从官网下载哪个文件是.dmg还是.tar.gz安装后怎么验证环境变量PATH和JAVA_HOME到底怎么设这些问题看似基础但每一步的疏忽都可能导致后续的Maven编译失败、IDE识别不到JDK或者终端里java -version命令报错。这篇内容就是为你梳理一条清晰、避坑的路径让你在十分钟内从零开始在Mac上稳稳当当地把JDK 8跑起来。无论你是要运行一个古老的Spring Boot 1.x项目还是为学习Hadoop、Spark等大数据框架做准备这套步骤都适用。2. 核心思路与方案选型PKG安装 vs 手动配置在Mac上安装JDK主流有两种方式通过Oracle官网下载的PKG安装包自动安装或者下载压缩包进行手动配置。选择哪种取决于你对系统的控制欲和后续管理的灵活性。2.1 PKG安装包官方一键式适合绝大多数用户这是最推荐新手使用的方式。你从Oracle官网下载的是一个后缀为.dmg的磁盘映像文件里面包含一个.pkg安装程序。双击运行就像安装普通Mac软件一样一路点击“继续”即可。安装程序会自动完成两件关键事将JDK文件复制到系统标准目录通常是/Library/Java/JavaVirtualMachines/jdk1.8.0_XXX.jdk/。这个路径是macOS系统公认的JDK家目录许多IDE如IntelliJ IDEA、Eclipse会自动扫描这个位置来发现已安装的JDK。在系统层面注册Java安装程序会配置一些系统链接让/usr/bin/java等命令指向新安装的JDK。优点省心、规范、不易出错。对于只需要一个固定版本JDK 8来完成工作的开发者来说这是最佳选择。缺点不够灵活。如果你想在同一台机器上管理多个JDK版本比如同时需要JDK 8、11、17纯PKG安装会稍显麻烦因为你需要手动切换系统默认的Java版本。2.2 压缩包手动安装追求灵活与控制权你也可以从Oracle官网下载.tar.gz压缩包。下载后手动解压到你喜欢的任何目录例如~/Library/Java/JavaVirtualMachines/或~/Development/jdk/。然后完全通过配置环境变量如JAVA_HOME,PATH来告诉系统去哪里找Java。优点版本管理灵活可以轻松安装多个JDK版本并通过切换环境变量或使用jenv等工具来管理当前使用的版本。目录可控你可以将JDK放在任何有权限的目录方便备份或迁移。无系统侵入不向系统目录写入内容对于有“洁癖”的开发者更友好。缺点步骤繁琐需要手动解压、配置环境变量对新手不友好。易出错环境变量配置错误是常见问题会导致命令无法执行。我们的选择考虑到通用性和简便性本文将重点详解通过PKG安装包安装的完整流程。这是覆盖最广、最稳妥的方案。同时我也会在环境变量配置部分补充手动安装方式的关键差异点供有需要的读者参考。3. 实操全流程从下载到验证3.1 步骤一访问Oracle官网并下载正确版本这是整个流程的第一步也是容易卡住的一步因为Oracle官网的布局和下载流程经历过多次改版。打开浏览器访问Oracle Java SE下载页面。由于直接搜索“JDK 8下载”可能指向过时的链接最可靠的方式是访问Oracle官网后导航至Java存档页。一个更直接的方法是使用搜索引擎关键词可以是“Java SE 8 Archive Downloads”。登录Oracle账户这是关键一步从某个时间点开始Oracle要求下载JDK特别是历史版本时必须登录其账户。如果你没有需要花一分钟时间注册一个。这是一个必要的步骤没有商量的余地。选择正确的版本在Java SE 8的下载列表中你会看到多个版本更新如8u401, 8u391等。通常选择最新的更新版本以获得最新的安全补丁。重点在于找到“macOS”对应的安装包。你要找的是这个jdk-8uXXX-macosx-x64.dmg。其中“XXX”代表更新号“x64”代表64位系统。对于现代的Intel芯片Mac或Apple Silicon Mac通过Rosetta 2运行都下载这个x64版本即可。注意区分不要下载jre-8uXXX-...JRE运行环境或serverjre-8uXXX-...服务器版JRE。我们需要的是完整的JDK开发工具包。勾选协议并下载在下载链接前必须勾选“Accept License Agreement”才能激活下载按钮。然后点击jdk-8uXXX-macosx-x64.dmg的链接开始下载。注意下载速度可能较慢因为Oracle的服务器在国内访问有时不稳定。如果遇到困难可以尝试更换网络环境或者寻找可靠的、由社区维护的镜像源例如Adoptium/Temurin提供的OpenJDK 8版本其安装体验类似且无需登录。但本文以官方Oracle JDK为例。3.2 步骤二运行安装程序并完成安装下载完成后通常在“下载”文件夹中找到.dmg文件。双击挂载磁盘映像双击jdk-8uXXX-macosx-x64.dmg文件。系统会将其作为一个虚拟磁盘挂载并在Finder中打开一个窗口里面包含一个.pkg安装包例如JDK 8 Update XXX.pkg和一个“许可协议”文档。运行PKG安装包双击这个.pkg文件启动安装向导。跟随向导安装首先会显示简介点击“继续”。然后是“许可协议”必须点击“同意”。安装类型通常保持默认的“安装所有用户”即可。这会安装到/Library/Java/JavaVirtualMachines/确保所有用户都能使用。选择目标磁盘默认是你的启动磁盘通常是Macintosh HD点击“继续”。身份验证点击“安装”后系统会提示你输入管理员密码因为这是向系统目录写入文件。输入密码并点击“安装软件”。等待安装完成安装过程很快通常几十秒内完成。最后会显示“安装成功”的提示点击“关闭”即可。弹出磁盘映像回到Finder在“设备”栏里找到刚刚挂载的JDK磁盘映像点击旁边的“弹出”按钮或者直接将其拖入废纸篓此时废纸篓图标会变成“弹出”图标。然后就可以删除下载的.dmg文件了。至此JDK 8的核心文件已经安装到你的Mac中。位置在/Library/Java/JavaVirtualMachines/jdk1.8.0_XXX.jdk/Contents/Home。这个Home目录就是常说的JAVA_HOME。3.3 步骤三验证安装与基本环境配置安装完成后我们需要验证Java是否可用并理解系统是如何找到它的。打开终端通过Spotlight搜索Command空格输入“终端”或从“应用程序 - 实用工具”中打开“终端”。验证Java命令在终端中输入以下命令并回车java -version如果安装成功你应该会看到类似下面的输出java version 1.8.0_401 Java(TM) SE Runtime Environment (build 1.8.0_401-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.401-b09, mixed mode)这证明了java命令已经可以全局使用。系统之所以能找到它是因为PKG安装程序在/usr/bin目录下创建了指向真实Java可执行文件的符号链接symlink。你可以用which java命令查看这个链接的位置通常会输出/usr/bin/java。验证Javac命令JDK和JRE的关键区别在于包含编译器javac。输入javac -version输出应为javac 1.8.0_401。这证明开发工具包也已就位。环境变量JAVA_HOME的配置 对于大多数通过PKG安装的情况你可能不需要手动设置JAVA_HOME。因为像IntelliJ IDEA、Maven这样的工具它们自己有智能的JDK发现机制会扫描标准目录。但是有些旧的脚本、特定的构建工具或者为了显式声明你可能需要设置它。此外如果你采用的是手动压缩包安装则必须设置。如何查看当前的 JAVA_HOME如果已设置echo $JAVA_HOME如果返回空行说明没有全局设置。手动设置 JAVA_HOME以PKG安装为例 macOS通常使用zsh作为默认shellCatalina及以后版本。我们需要编辑用户家目录下的~/.zshrc文件。在终端中使用文本编辑器如nano打开配置文件nano ~/.zshrc在文件末尾添加以下行请根据你实际的JDK版本号修改路径export JAVA_HOME/Library/Java/JavaVirtualMachines/jdk1.8.0_401.jdk/Contents/Home export PATH$JAVA_HOME/bin:$PATH第一行设置了JAVA_HOME变量。第二行将JDK的bin目录添加到PATH环境变量的最前面确保系统优先使用我们指定的JDK命令。按下Control O保存文件然后按Control X退出nano。让配置立即生效source ~/.zshrc再次验证echo $JAVA_HOME java -version此时echo $JAVA_HOME应该能输出你设置的路径java -version应显示JDK 8。实操心得除非你有明确的多版本管理需求否则在PKG安装后我建议先不急着配置JAVA_HOME。先去用你的IDE如IDEA创建一个Java项目看看它能否自动识别到刚安装的JDK 8。如果能就省事了。如果后续有工具报错说找不到JAVA_HOME你再回头来配置也不迟。这避免了过度配置可能带来的混乱。4. 进阶配置与多版本管理当你需要在同一台Mac上处理不同项目一个需要JDK 8另一个需要JDK 11或17时管理多个JDK版本就成了现实需求。4.1 使用jenv进行优雅的版本管理jenv是一个轻量级的命令行工具它可以让你轻松地在多个已安装的JDK版本之间切换并为每个项目或全局设置特定的Java版本。安装 jenv推荐使用Homebrew来安装。如果你还没有Homebrew可以先访问brew.sh官网安装。然后在终端运行brew install jenv配置 jenv将jenv的初始化脚本添加到你的shell配置中。对于zsh编辑~/.zshrc在末尾添加export PATH$HOME/.jenv/bin:$PATH eval $(jenv init -)保存并执行source ~/.zshrc。将已安装的JDK添加到 jenv假设你通过PKG安装了JDK 8在标准位置手动安装了JDK 11在~/Library/Java/JavaVirtualMachines/jdk-11.0.1/Contents/Home。# 添加JDK 8 jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_401.jdk/Contents/Home # 添加JDK 11 jenv add ~/Library/Java/JavaVirtualMachines/jdk-11.0.1/Contents/Home使用jenv versions查看所有被管理的版本前面带*的是当前正在使用的版本。切换版本设置全局版本jenv global 1.8或11.0使用jenv versions列出的标识符设置当前shell会话版本jenv shell 1.8设置本地目录版本进入你的项目目录执行jenv local 1.8这会在当前目录创建一个.java-version文件。以后进入这个目录jenv会自动切换为JDK 8。使用jenv后你不再需要手动修改JAVA_HOME和PATH它会帮你动态管理这一切非常清爽。4.2 IDE中的JDK配置无论你是否使用jenv在IDE中正确配置JDK是关键。以IntelliJ IDEA为例打开IDEA进入Preferences(设置) -Build, Execution, Deployment-Build Tools-Maven-Importing确保JDK for importer选择了你的JDK 8。更重要的地方在项目级别打开项目后File-Project Structure(快捷键Cmd;)。Project标签页在Project SDK下拉框中点击Add JDK...然后导航到你的JDK 8安装目录/Library/Java/JavaVirtualMachines/jdk1.8.0_XXX.jdk/Contents/Home。IDEA会自动识别并添加。然后为Project language level选择8。Modules标签页确保每个模块的Dependencies选项卡里Module SDK也选择了刚才添加的JDK 8。这样配置后IDEA的编译、运行和代码提示都会基于JDK 8。5. 常见问题排查与解决实录即使按照步骤操作你也可能会遇到一些问题。下面是我在实际操作和帮助他人过程中积累的一些常见坑点。5.1 问题一执行java -version显示的还是旧版本或非Oracle版本现象安装完JDK 8后终端里java -version显示的可能是openjdk version...或者一个更老的1.8.0_XX版本。原因你的PATH环境变量中有其他Java的路径比如之前通过Homebrew安装的OpenJDK或者macOS自带的旧版JRE排在了前面。排查与解决检查Java命令的完整路径which java。如果输出不是/usr/bin/java就说明有别的路径抢先了。查看PATH变量echo $PATH看看哪些路径包含java。Homebrew安装的Java通常在/usr/local/opt/openjdk/bin或类似路径。解决方案A推荐如果你希望系统默认使用新安装的Oracle JDK 8并且不想要其他版本可以卸载通过Homebrew安装的OpenJDKbrew uninstall --ignore-dependencies openjdk。然后重新打开终端java -version应该就正确了。解决方案B多版本共存如果你需要保留其他版本就使用前面提到的jenv工具来管理通过jenv global或jenv local来精确控制当前环境使用的版本。5.2 问题二IDE如IDEA找不到或无法添加JDK 8现象在IDEA的Project Structure-SDKs里点击Add JDK...弹出的文件选择器里在/Library/Java/JavaVirtualMachines/目录下看不到刚刚安装的JDK或者选择了Home目录后IDEA不识别。原因权限问题极少数情况下安装目录权限异常。IDE缓存IDEA的JDK列表缓存没有刷新。选择了错误路径必须选择Contents/Home这个子目录而不是.jdk包目录的根。解决确保你导航到的路径是/Library/Java/JavaVirtualMachines/jdk1.8.0_XXX.jdk/Contents/Home。直接手动输入这个路径到文件选择器的地址栏往往更可靠。如果还是不行尝试重启IDEA。检查目录权限在终端执行ls -la /Library/Java/JavaVirtualMachines/确保你有读取权限。正常安装后权限应该是drwxr-xr-x。5.3 问题三Maven编译或运行时报错提示语言版本不支持现象使用Maven编译项目时报错javac: invalid target release: 1.8或Fatal error compiling: invalid target release: 11。原因Maven使用的Java版本与项目指定的版本不匹配。你的项目pom.xml里可能指定了maven.compiler.source1.8/source但Maven运行时使用的却是更高版本的JDK比如11而高版本JDK默认的编译目标可能更高。解决首先在终端确认Maven使用的Java版本mvn -v。查看第一行输出。如果显示的不是JDK 8你需要确保Maven运行在正确的JDK上。有几种方式在命令行显式指定在运行mvn命令前先设置环境变量。例如如果你配置了JAVA_HOME指向JDK 8那么Maven通常会使用它。或者使用JAVA_HOME/path/to/jdk8 mvn clean install。使用Maven工具链这是更专业的方式。在~/.m2/目录下创建toolchains.xml文件定义不同版本的JDK然后在项目的pom.xml中配置使用特定的工具链。这可以彻底解耦系统环境与构建环境。在IDEA中配置在IDEA的Maven运行配置中可以指定一个特定的“JRE”其实就是JDK。在运行Maven Goal时点击配置在Runner标签页的JRE处选择你的JDK 8。5.4 问题四安装PKG时提示“安装器已损坏”或“无法打开”现象双击.pkg文件时系统弹出安全警告阻止安装。原因macOS的安全策略Gatekeeper阻止了来自未识别开发者的应用程序。Oracle的安装包虽然签名但有时会被较新版本的macOS严格审查。解决临时允许在Finder中找到下载的.dmg文件按住Control键的同时点击它选择“打开”。然后在弹出的警告框中点击“打开”。对于已经挂载的.pkg文件也可以尝试此操作。系统偏好设置如果上述不行进入系统设置-隐私与安全性滚动到最下方。如果看到关于“已阻止使用...”的提示旁边会有一个“仍要打开”的按钮点击它并输入密码。终端命令绕过作为最后的手段你可以通过终端命令安装不推荐新手sudo installer -pkg /Volumes/JDK\ 8\ Update\ XXX/JDK\ 8\ Update\ XXX.pkg -target /注意命令中的路径和文件名需要根据你实际挂载的磁盘映像名称进行调整通常包含空格需要用反斜杠\转义。最后我个人在实际操作中的体会是在Mac上管理Java环境清晰和隔离是关键。对于单一项目、固定使用JDK 8的开发者用PKG安装最省心。一旦你开始接触多个项目、不同Java版本尽早引入像jenv这样的版本管理工具或者使用IDE的项目级SDK配置能为你省去大量切换环境变量的麻烦。记住安装只是第一步确保你的构建工具Maven/Gradle和IDE都指向了正确的JDK才是项目能成功跑起来的保证。如果在配置Maven或IDE时遇到版本冲突回头检查java -version和JAVA_HOME的输出十有八九能定位到问题根源。

相关新闻

基于PRU-ICSS的软件定义IO-Link主站:实现动态时序配置与多协议集成

基于PRU-ICSS的软件定义IO-Link主站:实现动态时序配置与多协议集成

1. 项目概述与核心价值在工业自动化现场,传感器和执行器的“对话”容不得半点延迟和误差。IO-Link协议作为连接现场层设备的“普通话”,其通信的实时性和确定性是系统稳定运行的基石。然而,现实世界总是充满变数:不同厂商的设备响…

2026/10/10 13:32:21 阅读更多 →
美股科技巨头“集体渡劫”:股债双杀背后,AI投入何时换来商业回报?

美股科技巨头“集体渡劫”:股债双杀背后,AI投入何时换来商业回报?

美股科技巨头股债双杀,AI投入成“双刃剑”自二季度财报季开启,美股科技巨头遭遇尴尬的“集体渡劫”。特斯拉股价重挫,Alphabet财报发布后股价大幅跳水,同时,反映债务违约风险的信用违约互换(CDS&#xff09…

2026/10/2 5:15:31 阅读更多 →
千笔AI论文写作工具功能解析与使用技巧

千笔AI论文写作工具功能解析与使用技巧

1. 千笔AI论文写作工具深度解析作为一名在学术领域深耕多年的研究者,我最近系统测试了这款号称"全学科适配"的AI论文写作工具。经过为期三周的深度使用,我将从实际体验出发,分享这款工具的核心功能、适用场景以及使用技巧。2. 核心…

2026/9/28 2:06:30 阅读更多 →

最新新闻

STM32U5xx HAL 驱动组件解析:在 Arduino_Core_STM32 中的角色、结构与配置

STM32U5xx HAL 驱动组件解析:在 Arduino_Core_STM32 中的角色、结构与配置

嵌入式固件驱动开发硬件开发 【免费下载链接】Arduino_Core_STM32 STM32 core support for Arduino 项目地址: https://gitcode.com/gh_mirrors/ar/Arduino_Core_STM32 点击查看 免费下载 STM32Cube 是意法半导体(STMicroelectronics)面向整…

2026/10/15 1:58:11 阅读更多 →
Python 3.13 异步上下文变量(contextvars)实战:全链路追踪 TraceID 的无损透传

Python 3.13 异步上下文变量(contextvars)实战:全链路追踪 TraceID 的无损透传

在分布式微服务架构与全链路可观测性(Observability)体系中,**全局链路追踪标识(TraceID)**是定位线上疑难杂症、还原请求拓扑调用链路的唯一黄金钥匙。无论一个 HTTP 请求深入穿透了多少层内部领域服务、发起了多少次…

2026/10/15 1:58:11 阅读更多 →
std::expected 与 monadic 操作链(and_then / or_else)实战:构建微秒级零异常错误管线

std::expected 与 monadic 操作链(and_then / or_else)实战:构建微秒级零异常错误管线

在现代低延迟系统、高频交易引擎以及 AI 推理服务的基础设施中,软件执行的吞吐与确定性时延(Deterministic Latency)是系统的生命线。长期以来,C 工程师在面对错误处理时总陷入两难困境:使用标准的 throw / catch 异常…

2026/10/15 1:58:11 阅读更多 →
【光学】基于matlab涡旋光旋转多普勒效应测速(花瓣模光束 + 任意入射条件下旋转物体转速探测)【含Matlab源码 16075期】

【光学】基于matlab涡旋光旋转多普勒效应测速(花瓣模光束 + 任意入射条件下旋转物体转速探测)【含Matlab源码 16075期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…

2026/10/15 1:58:11 阅读更多 →
最新AI渗透收录【信矛 AI 自主渗透平台】

最新AI渗透收录【信矛 AI 自主渗透平台】

信矛AI自主渗透平台(SpearTrust):把年度项目制渗透,升级为常态化持续验证渗透测试报告会过期,业务风险不会等待。业务系统按天迭代,接口、权限和流程不断变化,一年一次的渗透测试难以回答&#…

2026/10/15 1:58:11 阅读更多 →
ECharts柱状图配置全解析:从基础到动态排序与性能优化

ECharts柱状图配置全解析:从基础到动态排序与性能优化

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

2026/10/15 1:57:11 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →