You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java+Selenium启动Chromedriver特定用户报错:无法找到默认字体(RHEL7.9)

问题核心

报错日志的关键信息是[FATAL:platform_font_skia.cc(98)] Check failed: InitDefaultFont(). Could not find the default font,说明特定用户运行Chromium时无法加载系统默认字体——尽管表面上权限和环境变量与正常用户一致,但存在隐藏的资源访问或配置差异。

解决方案

1. 验证字体目录访问权限

系统字体通常存放在/usr/share/fonts/和/etc/fonts/,检查特定用户能否读取这些目录:

su - 目标用户名 -c "ls -l /usr/share/fonts/"
su - 目标用户名 -c "cat /etc/fonts/fonts.conf"

如果出现权限拒绝,可调整目录权限(如chmod o+r -R /usr/share/fonts/),或将用户加入拥有字体目录权限的用户组。

2. 强制指定Chrome启动字体

在Java代码中通过ChromeOptions添加参数,直接指定系统中已安装的字体:

ChromeOptions options = new ChromeOptions();
// 替换为系统存在的字体名称,例如"Noto Sans"、"Arial"
options.addArguments("--default-font-family='Noto Sans'");
// 无头模式建议补充以下参数
options.addArguments("--headless");
options.addArguments("--disable-gpu");
WebDriver driver = new ChromeDriver(options);

3. 同步字体配置文件

复制正常用户的字体配置到特定用户目录,重建字体缓存:

# 复制配置文件
cp -r /home/正常用户名/.config/fontconfig/ /home/目标用户名/.config/
cp -r /home/正常用户名/.fonts/ /home/目标用户名/
# 修改权限归属
chown -R 目标用户名:目标用户名 /home/目标用户名/.config/fontconfig/ /home/目标用户名/.fonts/
# 重建字体缓存
su - 目标用户名 -c "fc-cache -fv"

4. 检查Chromium依赖库

确认特定用户环境下Chromium的字体相关依赖是否完整:

su - 目标用户名 -c "ldd /path/to/your/chromium | grep font"

对比正常用户的输出,安装缺失的依赖库(例如libfontconfig,可通过yum install fontconfig安装)。

5. 临时关闭沙箱测试

部分场景下用户权限不足导致沙箱启动失败,添加--no-sandbox参数排查问题:

options.addArguments("--no-sandbox");

注意:此参数仅用于排查,生产环境不建议长期使用,避免安全风险。


内容的提问来源于stack exchange,提问作者Kamlesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 10:48:16