Java awt Desktop 无法调用系统浏览器
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,用Spring boot搭建项目时,希望在项目启动完后能自动谈出首页。就用了java.awt.Desktop类 if (Desktop.isDesktopSupported()) {
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
网络安全法跨境流动
阿里云申请服务器
中国有网络主服务器吗
数据库突然进不去了怎么办
交通部软件开发
福建智慧团建软件开发电话
数据库和账套
vpn服务器安装
湖北电商软件开发哪家好
密云区综合网络技术推广经验丰富
天津网络技术信息采购
置办服务器
电脑带网络安全模式能否上网
硕士论文查重数据库
赛迪集团网络安全所蒲松涛
鸡西软件开发技术
小纸条软件开发
工业互联网平台就找汉脑科技
互联网科技感宣传册
epr软件开发公司
一橙网络技术有限公司怎么样
数据库直连如何处理高并发
中国网络安全应用研究院
网络安全生产基本原则
数据库表里字段的值相加
软件开发前期工作成果
山东省网信办网络安全首席专家
幼儿网络安全线上教育平台
赛迪集团网络安全所蒲松涛
软件开发公司主要做什么的工作