Java awt Desktop 无法调用系统浏览器
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,用Spring boot搭建项目时,希望在项目启动完后能自动谈出首页。就用了java.awt.Desktop类 if (Desktop.isDesktopSupported()) {
千家信息网最后更新 2026年11月02日Java awt Desktop 无法调用系统浏览器
用Spring boot搭建项目时,希望在项目启动完后能自动谈出首页。
就用了java.awt.Desktop类
if (Desktop.isDesktopSupported()) { try { // 弹出浏览器 - 显示HTTP接口(https) Desktop.getDesktop().browse(new URI("https://blog.csdn.net/weixin_42156742/article/details/81383628")); } catch (Exception e) { LOGGER.info(e.getMessage()); } }结果在测试类里可以正常访问,在启动项目后却无法弹出网页。
public static synchronized Desktop getDesktop(){ if (GraphicsEnvironment.isHeadless()) throw new HeadlessException(); if (!Desktop.isDesktopSupported()) { throw new UnsupportedOperationException("Desktop API is not " + "supported on the current platform"); } sun.awt.AppContext context = sun.awt.AppContext.getAppContext(); Desktop desktop = (Desktop)context.get(Desktop.class); if (desktop == null) { desktop = new Desktop(); context.put(Desktop.class, desktop); } return desktop; }private static boolean getHeadlessProperty() { if (headless == null) { AccessController.doPrivileged((PrivilegedAction) () -> { String nm = System.getProperty("java.awt.headless"); if (nm == null) { /* No need to ask for DISPLAY when run in a browser */ if (System.getProperty("javaplugin.version") != null) { headless = defaultHeadless = Boolean.FALSE; } else { String osName = System.getProperty("os.name"); if (osName.contains("OS X") && "sun.awt.HToolkit".equals( System.getProperty("awt.toolkit"))) { headless = defaultHeadless = Boolean.TRUE; } else { final String display = System.getenv("DISPLAY"); headless = defaultHeadless = ("Linux".equals(osName) || "SunOS".equals(osName) || "FreeBSD".equals(osName) || "NetBSD".equals(osName) || "OpenBSD".equals(osName) || "AIX".equals(osName)) && (display == null || display.trim().isEmpty()); } } } else { headless = Boolean.valueOf(nm); } return null; }); } return headless; } 往下排查原因,发现 getHeadlessProperty 方法中 System.getProperty("java.awt.headless") 处获取系统参数时返回了true。
导致直接抛出了HeadlessException异常。Headless模式是在缺少显示屏、键盘或者鼠标时的系统配置,这是此处的参数导致了无法弹出指定窗口。
System.setProperty("java.awt.headless", "false");所以需要提前设置参数为false。
参数
项目
系统
浏览器
浏览
原因
接口
方法
是在
显示屏
模式
结果
网页
这是
键盘
鼠标
首页
测试
配置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡网
鸠鸠互联网科技
互联网科技卖菜
互联网金融与金融科技
碳银互联网科技有限公司
火传媒上海互联网科技
盛创互联网科技有限公司
深圳互联网科技怎么样
互联网实体化科技化
北京三清互联网科技
互联网企业和科技型企业
互联网科技大奖都有哪些公司
想开互联网科技公司怎么样
2021互联网科技公司排名
伍佰万互联网科技怎么赚钱
下一代互联网重大应用科技园
米泉互联网科技专业怎么样
好易买互联网科技
互联网科技的前景
上海互联网科技园景观
互联网科技公司
广州互联网络科技有限公司
互联网科技缩写
互联网科技公司介绍
玉溪互联网科技怎么选
科技互联网海报
高科技互联网套路
广州梦谷互联网科技有限公司领导
容联科技互联网电商
山东蛋芒互联网科技有限公司