当前位置: 首页 > news >正文

JAVA不能调用DESKTOP类_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。

相关文章:

  • java返回并继承_Java方法从继承返回类型
  • java输入查找数组中的数_剑指Offer Java版 面试题53:在排序数组中查找数字
  • 插座java适配器模式_Java开发网 - 适配器模式的理解 (我自己写的)
  • java中borderpane_JavaFX BorderPane布局
  • Java如何查行数_如何正确利用Rownum来限制查询所返回的行数?
  • java 3 4_3-4 Java基础第四天
  • php phar 文件使用,PHP如何操作phar文件
  • java使用xpath解析xml,java使用XPath解析xml
  • php脚本防护,PHP的一个EVAL的利用防范
  • php中背景图怎么设置不重复,css怎么让背景图片不重复
  • java标签更改显示,离子选项卡,如何在标签更改上显示微调器?
  • java读写二进制文件 移动指针 seek,《Java大学教程》—第20章 文件处理
  • php权限无需验证的控制器,控制器 · ThinkPHP5权限管理 · 看云
  • 两'参数粒子群matlab,SVM用粒子群优化参数
  • 数据在文本框中显示 php,在文本框中使用php和纯ajax从数据库加载数据
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [NodeJS] 关于Buffer
  • 2017 年终总结 —— 在路上
  • 345-反转字符串中的元音字母
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • C学习-枚举(九)
  • HTTP那些事
  • leetcode386. Lexicographical Numbers
  • PAT A1120
  • python_bomb----数据类型总结
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • React+TypeScript入门
  • ReactNativeweexDeviceOne对比
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 跨域
  • 码农张的Bug人生 - 见面之礼
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (1) caustics\
  • (规划)24届春招和25届暑假实习路线准备规划
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十六)串口UART
  • (新)网络工程师考点串讲与真题详解
  • (一)UDP基本编程步骤
  • (转)linux 命令大全
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET Core 项目指定SDK版本
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .net MVC中使用angularJs刷新页面数据列表
  • .Net 路由处理厉害了
  • .NET 指南:抽象化实现的基类
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • @KafkaListener注解详解(一)| 常用参数详解
  • @SuppressWarnings(unchecked)代码的作用
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [20150629]简单的加密连接.txt
  • [20180129]bash显示path环境变量.txt
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作