用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<Void>) () -> {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。

转载于:https://blog.51cto.com/8189347/2154137

Java awt Desktop 无法调用系统浏览器相关推荐

  1. android--调用系统浏览器,Android 调用系统浏览器

    //正常调用系统默认浏览器 Intent intent= new Intent(); intent.setAction("android.intent.action.VIEW"); ...

  2. android调用系统浏览器和拨打电话

    项目用到打电话的地方比较多,所以今天封装了一个调用系统方法的类,记录一下,以后用到了直接拿来用. //打开系统浏览器 public static void showWeb(Context contex ...

  3. android8.0调用系统浏览器,ie浏览器在线使用,ie浏览器8.0手机安卓版-

    Ie浏览器是微软开发的浏览器,这种浏览器是目前最常见的兼容性最强的浏览器. Ie浏览器也是世界上最早期出现的网络浏览器,主要是用于查资料和上网使用的. 过去的年代里没有太多的播放器和图片查看软件,人们 ...

  4. (转)AppCan中调用系统浏览器打开网页

    <!DOCTYPE html> <html> <head> <style>body{ background:#fff; font-size:30px;} ...

  5. php调用系统浏览器代码,php判断操作系统或浏览器实现代码

    function userOS($user_OSagent="){ if(strpos($user_OSagent,"NT 6.1″)) { $visitor_os = " ...

  6. java调用指定浏览器_Java调用浏览器打开网页完整实例

    本文实例讲述了java调用浏览器打开网页的方法.分享给大家供大家参考.具体实现方法如下: package com.yifang.demo; import java.io.file; public cl ...

  7. 常用代码块:java使用系统浏览器打开url

    方法一:用于windows try { Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+url) ...

  8. android 相机拍照返回,Android6.0机型上调用系统相机拍照返回的resultCode值始终等于0的问题...

    版权声明:本文为博主原创文章,未经博主允许不得转载. 正常情况下调用系统相机拍照: 如果拍照后点击的是"确定"图标,返回的resultCode = -1(Activity.RESU ...

  9. Android获取本机浏览器包名,并调用指定浏览器打开网页

    昨天还在嘀咕着项目快做完了,接下来公司会安排什么事,结果今天就给了我一个新任务,其中要做的一个功能就是指定调用谷歌浏览器打开网页,如果没有该浏览器就提示客户进行下载,查找一番资料后,觉得这种东西还是要 ...

最新文章

  1. openSUSE11.1 用Yast安装virtualbox 2.06
  2. 成都Uber优步司机奖励政策(1月20日)
  3. python SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: trunca
  4. openmp官方源码_MNN推理过程源码分析笔记(一)主流程
  5. 爬虫404如何跳过_网站改版之后的一次思考:网站改版会让网站受伤?我们如何让他不降反升...
  6. jQuery的eval
  7. CSS 实现加载动画之五-光盘旋转
  8. Java函数式编程(一)–Function的使用
  9. BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草
  10. java 企业号 临时素材_【fastweixin框架教程8】微信企业号临时素材管理
  11. 华大单片机-HC32L13X系列芯片OPA配置-芯虎论坛
  12. 卷积神经网络(CNN)的参数优化方法
  13. 【Python】列表排序,用 sort() 还是 sorted()?
  14. ABP中的AsyncCrudAppService介绍
  15. 林子雨—大数据技术原理与应用—上机实验二
  16. Mockito stubbing
  17. 基于springboot+mybatisplus+vue-科技项目评审及专家库管理系统
  18. Zabbix安装部署【超级详细】
  19. Windows VS2017使用GoogleTest
  20. libpng error: IDAT: invalid distance too far back解决方案

热门文章

  1. “中序表达式”转“后续表达式”
  2. NYOJ 回文字符串
  3. Python descriptor
  4. hadoop完全分布式集群群起
  5. java中executeQuery()方法
  6. 【JOI2017春季合宿】Port Facility
  7. Node.js获取本机IP
  8. 牛客网 Wannafly挑战赛8 A.小Y和小B睡觉觉
  9. ios模拟器快捷键操作
  10. android service 学习(上)