JMeter安装配置全攻略:从Java环境到性能测试实战避坑指南
1. 项目概述为什么需要一个“保姆级”的JMeter安装教程如果你正在搜索“JMeter安装教程”大概率是刚接触性能测试或者被领导、项目要求“压一下接口看看”。网上的教程很多但往往不是缺了环境变量配置就是少了关键组件的安装或者版本对不上导致各种报错让人从第一步“安装”就开始卡壳信心备受打击。这正是我写这篇超详细指南的初衷——它不仅仅是一个安装步骤清单更是一个帮你避开所有常见坑位、确保一次成功的“避坑地图”。JMeter作为一款开源的纯Java性能测试工具以其强大的功能和灵活性在接口测试、压力测试、负载测试等领域几乎是工程师的标配。但它的“纯Java”特性也意味着安装过程比那些“下一步下一步”的图形化软件要复杂一些核心在于Java运行环境JRE/JDK的配置和JMeter自身环境变量的设置。很多人安装失败问题都出在这两个环节。这篇教程将手把手带你完成从零到一的完整安装并配置好中文界面和可执行脚本让你在Windows系统上快速搭建起一个稳定、可用的JMeter测试环境。无论你是测试工程师、开发人员还是运维同学只要跟着步骤走半小时内你就能在命令行里敲下jmeter命令并看到那个熟悉的界面弹出来。2. 核心准备理解JMeter的依赖与版本选择在动手下载任何安装包之前搞清楚依赖关系是避免后续无数报错的关键。JMeter的核心依赖只有一个Java。但这里的Java指的是Java运行环境具体是JRE还是JDK呢2.1 Java环境JRE还是JDK理论上运行JMeter只需要JREJava Runtime Environment即可。但根据我多年的实战经验强烈建议直接安装JDKJava Development Kit。原因有三避免环境缺失JDK包含了完整的JRE一劳永逸。有些系统优化或精简版的JRE可能缺少某些非核心库在运行JMeter特定插件或高级功能时可能报错。为未来扩展做准备如果你后续需要基于JMeter进行二次开发比如编写自定义的Java请求采样器、监听器等或者需要调试JMeter源码JDK是必需品。一致性保障大多数开发和测试环境的标准化配置都是JDK使用JDK能保证环境一致性。关于Java版本JMeter官网推荐使用Java 8或11。目前最稳妥、兼容性最广的选择是JDK 8或JDK 11。更高版本的JDK如17, 21虽然也可能运行但某些第三方插件可能存在兼容性问题。对于新手我建议选择JDK 8这是经过最广泛验证的版本。2.2 JMeter版本选择策略访问Apache JMeter官网你会看到多个版本。选择策略如下最新稳定版Stable Release对于大多数新项目和个人学习直接选择官网首页标注的最新稳定版如撰写本文时的5.6.3。它包含了最新的功能修复和性能改进。历史版本如果你的团队或项目正在使用一个特定旧版本如3.1, 4.0为了脚本兼容性建议保持一致。可以在归档目录里找到。Beta版除非你想尝鲜或测试新功能否则不建议用于生产或学习。注意下载时请务必通过官网jmeter.apache.org或可靠的镜像站下载避免第三方修改过的版本带来安全风险或捆绑软件。2.3 工具与材料清单在开始前请确保你准备好以下两样东西一台Windows操作系统的电脑本教程以Win10/Win11为例Win7也基本通用。稳定的网络连接用于下载安装包。你需要下载的安装包JDK 8安装包从Oracle官网或OpenJDK发行版如AdoptOpenJDK, Amazon Corretto获取。推荐使用OpenJDK发行版无需注册。Apache JMeter压缩包从官网下载apache-jmeter-5.6.3.zip这样的二进制包-bin.zip后缀而不是源码包-src.zip。3. 实操第一步安装与配置Java环境这是整个安装过程的基石一步错步步错。请严格按照顺序操作。3.1 下载与安装JDK下载以AdoptOpenJDK为例访问其官网选择JDK 8LTS版本HotSpot JVM然后下载适用于Windows的64位安装程序.msi文件。安装运行下载的.msi安装程序。安装过程中最关键的一步是记住你的JDK安装路径。默认路径通常是C:\Program Files\AdoptOpenJDK\jdk-8.0.xxx.xx-hotspot。你可以使用默认路径也可以自定义到一个简单无空格的路径例如D:\Java\jdk1.8.0_xxx。记住这个路径后面称为[你的JDK安装目录]。3.2 配置系统环境变量核心步骤这是让系统在任何位置都能识别java命令的关键。我们将配置两个系统变量JAVA_HOME和Path。打开系统属性在Windows搜索框输入“环境变量”选择“编辑系统环境变量”。新建JAVA_HOME变量点击“环境变量”按钮。在“系统变量”区域点击“新建”。变量名输入JAVA_HOME。变量值输入你刚才记下的[你的JDK安装目录]例如D:\Java\jdk1.8.0_391。务必精确到JDK的根目录不是bin目录也不是JRE目录。编辑Path变量在“系统变量”区域找到并选中Path变量点击“编辑”。点击“新建”然后添加一条新记录%JAVA_HOME%\bin。为了确保优先使用我们设置的JDK可以将这条记录通过“上移”按钮移动到列表靠前的位置。3.3 验证Java安装配置完成后必须验证。按Win R输入cmd打开命令提示符。输入命令java -version并回车。如果配置正确你将看到类似下面的输出显示了Java的版本信息版本号应为1.8.0_xxxjava version 1.8.0_391 Java(TM) SE Runtime Environment (build 1.8.0_391-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.391-b13, mixed mode)再输入javac -version验证编译器这是JDK才有的应显示类似的版本信息。实操心得90%的Java环境问题都出在环境变量配置错误。常见错误包括JAVA_HOME路径末尾多了分号或空格Path变量中%JAVA_HOME%\bin的拼写错误或者系统存在多个Java版本导致冲突。验证命令是最直接的检查手段。4. 实操第二步安装与配置JMeter本体Java环境搞定后JMeter的安装就相对简单了因为它是一个“绿色软件”无需安装程序。4.1 下载与解压下载从Apache JMeter官网下载最新的apache-jmeter-5.6.3-bin.zip文件。解压将这个ZIP文件解压到你希望安装的目录。路径中最好不要包含中文或空格以免引起不必要的编码问题。例如我习惯解压到D:\Tools\apache-jmeter-5.6.3。这个目录就是JMeter的根目录后面我们称之为[你的JMeter安装目录]。4.2 配置JMeter环境变量虽然不配置环境变量也能通过双击bin目录下的脚本启动JMeter但配置后可以在任意命令行窗口快速启动方便很多。新建JMETER_HOME变量再次打开“系统属性” - “环境变量”。在“系统变量”区域点击“新建”。变量名输入JMETER_HOME。变量值输入你的[你的JMeter安装目录]例如D:\Tools\apache-jmeter-5.6.3。编辑Path变量编辑Path变量新建一条记录%JMETER_HOME%\bin。同样可以将其上移到合适位置。4.3 验证JMeter安装与首次启动打开一个新的命令提示符重要必须新开一个以使新的环境变量生效。输入命令jmeter -v并回车。如果配置正确你会看到JMeter的版本信息输出。启动JMeter图形界面在命令行输入jmeter并回车。或者直接进入[你的JMeter安装目录]\bin双击jmeter.bat文件。稍等片刻JMeter的图形化界面GUI就会启动。首次启动可能会看到一个“捐赠”提示框关闭即可。至此JMeter的基本安装已经成功5. 核心优化让JMeter更好用默认安装的JMeter是英文界面且启动方式略显繁琐。我们可以进行一些优化提升使用体验。5.1 切换为中文界面JMeter原生支持多语言切换非常简单且无需重启。在JMeter GUI界面中点击顶部菜单栏的Options。选择Choose Language。在弹出的子菜单中选择Chinese (Simplified)。界面会立即切换为简体中文。这个设置会保存在你的用户配置中下次启动依然是中文。5.2 创建桌面快捷方式可选但推荐每次从命令行或资源管理器深处找jmeter.bat很麻烦。我们可以创建一个桌面快捷方式。在桌面空白处右键选择“新建” - “快捷方式”。在“请键入对象的位置”框中输入cmd /c start “” “[你的JMeter安装目录]\bin\jmeter.bat”。例如cmd /c start “” “D:\Tools\apache-jmeter-5.6.3\bin\jmeter.bat”。点击“下一步”为快捷方式命名例如“JMeter 5.6.3”。点击“完成”。现在双击这个桌面图标就能直接启动JMeter了。你还可以右键快捷方式 - “属性” - “更改图标”为它选一个好看的图标图标文件在[你的JMeter安装目录]\bin目录下名为jmeter.ico。5.3 调整JVM参数以提升性能高级可选对于复杂的测试计划JMeter GUI可能会感觉卡顿。我们可以通过修改jmeter.bat文件来调整分配给JMeter的JVM堆内存。用记事本或代码编辑器如VS Code打开[你的JMeter安装目录]\bin\jmeter.bat文件。搜索set HEAP。你会找到类似下面两行set HEAP-Xms1g -Xmx1g -XX:MaxMetaspaceSize256m-Xms1gJVM启动时的初始堆内存大小1GB。-Xmx1gJVM可使用的最大堆内存大小1GB。根据你电脑的物理内存情况适当调整。例如如果你的电脑有16GB内存可以调整为set HEAP-Xms2g -Xmx4g -XX:MaxMetaspaceSize512m初始2GB最大4GB。注意不要设置得超过你物理内存的70%并且要为操作系统和其他应用留出足够内存。保存文件。修改后重启JMeter生效。注意事项修改批处理文件有风险修改前建议先备份原文件。如果修改后JMeter无法启动通常是参数格式错误或内存值设置不合理恢复备份即可。6. 安装验证与“Hello World”测试安装和优化都完成后我们需要做一个完整的验证确保JMeter能正常工作。6.1 完整验证流程关闭所有已打开的JMeter和命令行窗口。使用桌面快捷方式或从开始菜单新开一个命令提示符。验证环境变量输入echo %JAVA_HOME%应正确显示你的JDK路径。输入echo %JMETER_HOME%应正确显示你的JMeter路径。验证命令输入java -version和jmeter -v均应正确输出版本信息。启动GUI输入jmeter等待GUI界面成功启动。检查语言确认界面是否为中文如果你之前切换过。6.2 执行一个最简单的测试计划理论不如实践我们创建一个最简单的测试发送一个HTTP请求到公共测试网站。在JMeter GUI中右键“测试计划” - “添加” - “线程用户” - “线程组”。这是一个虚拟用户组。在左侧树状图中选中刚创建的“线程组”右键 - “添加” - “取样器” - “HTTP请求”。在右侧的HTTP请求控制面板中协议保持为http。服务器名称或IP输入httpbin.org一个免费的HTTP测试服务。路径输入/get。我们需要查看结果。选中“线程组”右键 - “添加” - “监听器” - “查看结果树”。现在点击工具栏上的绿色“启动”按钮或按CtrlR运行测试。运行完成后在左侧点击“查看结果树”。在右侧面板点击第一个请求你可以在“响应数据”标签页下看到httpbin.org/get返回的JSON数据其中包含了你的请求信息。恭喜这证明你的JMeter已经完全安装配置成功并且可以正常发起网络请求了。7. 常见问题与排查技巧实录即使按照教程一步步操作也可能遇到意外情况。这里我汇总了新手最常遇到的几个问题及其解决方案。7.1 启动时报错“Not able to find Java executable or version”错误现象双击jmeter.bat或运行jmeter命令时窗口一闪而过或提示找不到Java。排查思路检查Java安装在命令行输入java -version确认是否安装成功并输出版本信息。如果报错回到第3步重新配置Java环境变量。检查环境变量确认JAVA_HOME变量指向的是JDK根目录包含bin、lib等文件夹的目录而不是bin目录内部。确认Path变量中包含%JAVA_HOME%\bin。重启命令行配置环境变量后必须关闭所有旧的命令提示符窗口新开一个再试。权限问题极少数情况下可能是当前用户对JDK安装目录没有读取权限。7.2 启动JMeter GUI时卡顿、缓慢或界面错乱错误现象JMeter可以启动但界面响应慢拖动窗口有残影或者组件显示不正常。排查思路调整JVM参数这是最常见的原因。按照5.3节的方法适当增加-Xms和-Xmx的值如从1g调到2g/4g。使用命令行启动尝试以命令行模式启动并禁用一些视觉效果。编辑一个.bat文件内容为set JVM_ARGS-Djava.awt.headlesstrue -noverify jmeter.bat以headless模式运行可能会改善性能但某些依赖图形界面的监听器可能无法使用。检查系统显示缩放如果Windows系统设置了较高的显示缩放比例如150%可能会导致某些Swing组件渲染异常。尝试将缩放比例暂时调回100%。更新显卡驱动虽然罕见但过时的显卡驱动有时会影响Java Swing应用的渲染。7.3 运行测试时遇到内存溢出OutOfMemoryError错误现象在运行一个包含大量线程或数据的测试时JMeter崩溃并在jmeter.log文件位于bin目录中看到java.lang.OutOfMemoryError: Java heap space错误。排查思路增加堆内存立即按照5.3节的方法增大-Xmx参数的值。这是最直接的解决方案。优化测试计划减少单个线程组的线程数改用更多、更小的线程组。使用“CSV数据集配置”等元件时避免一次性将超大文件读入内存考虑循环读取。谨慎使用会保存大量响应数据的监听器如“查看结果树”在正式压测时禁用或仅使用聚合报告等轻量级监听器。调整JVM GC参数对于高级用户可以尝试在jmeter.bat的JVM_ARGS中添加垃圾回收器优化参数例如-XX:UseG1GC。7.4 中文乱码问题错误现象请求参数或响应数据中的中文字符显示为问号“?”或乱码。排查思路修改JMeter配置文件用记事本打开[你的JMeter安装目录]\bin\jmeter.properties文件。查找编码设置搜索sampleresult.default.encoding。取消注释并修改找到该行默认可能是被注释的行首有#。去掉行首的#并将其值修改为UTF-8。sampleresult.default.encodingUTF-8保存并重启JMeter。此设置定义了JMeter处理响应数据的默认编码。7.5 无法保存测试计划或插件管理报错错误现象点击保存时提示权限不足或使用“插件管理器”时连接失败。排查思路权限问题不要将JMeter安装在系统保护目录如C:\Program Files下。如果已经安装请将其整个文件夹移动到用户目录下如D:\Tools或C:\Users\你的用户名。或者尝试以管理员身份运行JMeter。网络问题插件管理器需要访问海外仓库。如果网络连接不畅可能会失败。可以尝试配置网络代理或者手动下载插件.jmx文件进行安装。防火墙/安全软件拦截临时禁用防火墙或安全软件检查是否是其阻止了JMeter的网络连接。把这些问题和解决方案整理成表格方便你快速查阅问题现象可能原因解决方案启动失败提示找不到Java1. Java未安装或未正确安装2. 环境变量JAVA_HOME或Path配置错误1. 重新安装JDK2. 仔细检查并修正环境变量重启命令行JMeter GUI启动缓慢、卡顿1. 默认JVM堆内存不足2. 系统显示缩放问题1. 修改jmeter.bat中的HEAP参数增加内存2. 调整系统显示缩放至100%运行测试时内存溢出OOM1. 测试负载过大超出JVM堆内存限制2. 测试计划设计不合理内存泄漏1. 增大-Xmx参数值2. 优化测试计划减少内存占用如禁用“查看结果树”请求或响应中的中文乱码JMeter默认编码不是UTF-8修改jmeter.properties中的sampleresult.default.encodingUTF-8无法保存文件或插件安装失败1. 安装目录权限不足如Program Files2. 网络连接问题1. 将JMeter移至非系统目录或以管理员身份运行2. 检查网络或手动下载插件安装安装和配置只是使用JMeter的第一步但一个稳固的起点能让你在后续学习和实战中事半功倍避免被环境问题消耗不必要的精力。当你熟悉了基本操作后下一步就是深入学习线程组、控制器、取样器、监听器等核心元件的使用进而设计出复杂的性能测试场景。记住性能测试的核心是模拟真实用户行为分析系统瓶颈而JMeter是你手中最得力的工具之一。

相关新闻

Excel密码保护全解析:从原理到实战,教你安全移除工作表与文件加密

Excel密码保护全解析:从原理到实战,教你安全移除工作表与文件加密

1. 从“忘记密码”的尴尬说起:Excel密码保护的双重面孔 相信很多朋友都遇到过这样的场景:一份至关重要的Excel表格,可能是几年前做的项目预算,也可能是记录了重要客户信息的清单,当时为了防止数据被误改或偷看&#xf…

2026/10/11 23:28:12 阅读更多 →
泰美空间设计案例:家装设计性能与参数如何评估?

泰美空间设计案例:家装设计性能与参数如何评估?

对于寻求口碑不错的装修、家装、工装、室内设计、全屋整装供应商的消费者而言,评估设计方案的性能与技术参数是确保落地效果的关键。泰美空间设计作为一家位于泰安东部上高街道天烛峰路南段的个性化设计工作室,其案例中的技术参数与性能表现,…

2026/10/12 9:32:22 阅读更多 →
江西高二冲刺高考班

江西高二冲刺高考班

南昌金博教育是江西省南昌市一所专注于高三全日制冲刺集训的民办教育机构,主要面向江西地区高二升高三的学生群体,提供食宿一体、封闭管理的小班化教学服务。对于孩子成绩中等偏下、希望在高三前集中冲刺补齐短板的家庭来说,选择一家管理严格…

2026/10/12 9:32:27 阅读更多 →

最新新闻

ESP32开发实战:从硬件设计到软件优化的全面指南

ESP32开发实战:从硬件设计到软件优化的全面指南

1. ESP32初探:当WiFi遇上MCU的革命性突破第一次拿到ESP32开发板时,我对着那个比指甲盖大不了多少的芯片发愣——这玩意儿真能同时跑WiFi和蓝牙?要知道五年前我还在用8266做智能插座的时候,光配个WiFi模块就得额外占用半个PCB面积。…

2026/10/13 8:00:27 阅读更多 →
热转印TTO设备深度解析:选型、故障排查与产线数字化趋势

热转印TTO设备深度解析:选型、故障排查与产线数字化趋势

1. 市场现状:TTO设备为什么成了产线上的“隐形刚需”做标识设备这些年,我最直观的感受是:市场对热转印(TTO)设备的认知,正在从“一个打日期的小机器”变成“产线数字化入口”。早些年提到热转印&#xff0c…

2026/10/13 8:00:27 阅读更多 →
选煤厂人员定位新思路:智能照明与ZigBee、4G/5G混合方案解析

选煤厂人员定位新思路:智能照明与ZigBee、4G/5G混合方案解析

简介:《基于通讯网络及智能照明系统的选煤厂人员的定位系统》是一份面向选煤厂智能化建设与人员安全管理的PDF参考文献,适合煤炭企业自动化工程师、矿山物联网开发者及智慧照明系统设计人员参考。内容围绕上湾选煤厂实际场景,系统比较ZigBee与…

2026/10/13 8:00:27 阅读更多 →
Open Code Review:一种可落地的透明化代码评审方法论

Open Code Review:一种可落地的透明化代码评审方法论

1. “open-code-review”不是开源项目,而是一套可落地的代码评审实践方法论“open-code-review”这个词最近在技术社区里频繁出现,但很多人第一反应是——这是某个新开源的代码审查工具?还是某家大厂刚发布的内部平台代号?其实都不…

2026/10/13 8:00:27 阅读更多 →
楼宇自控施工组织方案:从点位表到调试的返工预防指南

楼宇自控施工组织方案:从点位表到调试的返工预防指南

简介:一份面向楼宇自控施工人员与弱电工程项目的技术方案文档,系统讲解BAS(楼宇自动化控制)施工的全流程,包括工艺流程、线缆敷设、校接线、设备安装及传感器布置等关键环节。文档从施工准备与电管预留预埋讲起&#x…

2026/10/13 8:00:27 阅读更多 →
综合能源系统双层优化调度策略复现与Matlab实现解析

综合能源系统双层优化调度策略复现与Matlab实现解析

1. 项目概述与选题背景1.1 为什么"核心期刊复现"这么让人头大先说结论:复现一篇综合能源系统方向的核心期刊论文,很多时候比自己在原有框架上加一个新目标函数更痛苦。原因很简单,期刊正文里给出的公式是从定稿模型中截取的"高…

2026/10/13 7:59:25 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →