簡體   English   中英

JDK11 的 checkSystemClipboardAccess 替代方案

[英]checkSystemClipboardAccess alternative for JDK11

JDK11 已從SecurityManager刪除checkSystemClipboardAccess 剪貼板處理中建議的替代習語是什么?

我想像這樣檢查剪貼板的可用性:

public static boolean hasClipboard() {
    SecurityManager sm = System.getSecurityManager();
    if (sm == null) return true;
    try {
        sm.checkSystemClipboardAccess();
        return true;
    } catch (SecurityException x) {
        /* */
    }
    return false;
}

但是在JDK11中編譯它是不可能的。

2020 年 2 月 1 日編輯:
根據我現在使用的建議:

public static boolean hasClipboard() {
    SecurityManager sm = System.getSecurityManager();
    if (sm == null) return true;
    try {
        sm.checkPermission(new AWTPermission("accessClipboard"));
        return true;
    } catch (SecurityException x) {
        /* */
    }
    return false;
}

一個快速的解決方法是簡單地替換你對sm.checkSystemClipboardAccess();調用sm.checkSystemClipboardAccess(); 調用sm.checkPermission(new java.awt.AWTPermission("accessClipboard")); .

請參閱Java 開發工具包 (JDK)中 Oracle 的 JDK 8 技術說明權限,其中明確解決了棄用checkSystemClipboardAccess()

方法

public void checkSystemClipboardAccess(); 注意:此方法已棄用; 改用 public void checkPermission(Permission perm);

允許

java.awt.AWTPermission "accessClipboard";

[Google] 搜索術語java checkSystemClipboardAccess 已刪除,提供了指向 Oracle 的SecurityManager類(JDK 10)的javadoc的鏈接,方法checkSystemClipboardAccess()的文檔包含以下內容:

已棄用,需要移除:此 API 元素可能會在未來版本中移除。 該方法最初用於檢查調用線程是否可以訪問系統剪貼板。 該方法已過時,代碼應改為使用 checkPermission(java.security.Permission) 來檢查 AWTPermission("accessClipboard")。 此方法可能會在 Java SE 的未來版本中刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM