91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

红河县| 绍兴县| 宾阳县| 虹口区| 黄平县| 长顺县| 渝北区| 石泉县| 巍山| 福鼎市| 东阿县| 乐安县| 祁阳县| 四子王旗| 镇巴县| 嵩明县| 唐河县| 沾益县| 依安县| 荆门市| 东莞市| 天等县| 镇康县| 建水县| 麻江县| 买车| 康平县| 卓资县| 珠海市| 潞西市| 台江县| 无锡市| 海兴县| 晴隆县| 庐江县| 蒙阴县| 汾阳市| 贵德县| 揭东县| 报价| 米易县|