中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java awt Desktop 無法調用系統瀏覽器

發布時間:2020-07-18 16:49:12 來源:網絡 閱讀:731 作者:IsCassidy 欄目:軟件技術

用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。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安陆市| 明星| 临汾市| 通江县| 阜南县| 平湖市| 涿州市| 盐边县| 左云县| 渭南市| 方山县| 仙游县| 贵州省| 葫芦岛市| 乳山市| 南岸区| 南充市| 合川市| 建水县| 咸阳市| 赞皇县| 乌海市| 博湖县| 吉木萨尔县| 北川| 昭苏县| 万州区| 洛宁县| 鄂尔多斯市| 阿克陶县| 尼玛县| 邳州市| 伊宁县| 桃源县| 孟连| 汝阳县| 德格县| 东港市| 枝江市| 伽师县| 乐东|