JDK11已经将checkSystemClipboardAccess从SecurityManager中删除。在剪贴板处理中,建议的替代成语是什么?
我想像这样检查剪贴板的可用性:
public static boolean hasClipboard() {
SecurityManager sm = System.getSecurityManager();
if (sm == null) return true;
try {
sm.checkSystemClipboardAccess();
return true;
} catch (SecurityException x) {
/* */
}
return false;
}但是不可能在JDK11中编译它。
编辑01.02.2020:
根据我现在使用的建议:
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;
}发布于 2020-02-01 05:36:07
对于删除的java checkSystemClipboardAccess术语的Google搜索提供了一个指向Oracle SecurityManager (JDK 10)的链接,方法checkSystemClipboardAccess()的文档包含以下内容:
不建议删除:这个API元素在将来的版本中会被删除。此方法最初用于检查调用线程是否可以访问系统剪贴板。该方法已经过时,代码应该使用checkPermission(java.security.Permission)检查AWTPermission("accessClipboard")。此方法将在未来版本的Java中被删除。
发布于 2020-02-01 04:44:38
一个快速的解决方法是简单地将对sm.checkSystemClipboardAccess();的调用替换为对sm.checkPermission(new java.awt.AWTPermission("accessClipboard"));的调用。
参见Oracle的JDK8Technote Java开发工具包(JDK)中的权限,它显式地解决了checkSystemClipboardAccess()的弃用问题。
方法 public void checkSystemClipboardAccess();注意:这个方法是不推荐的;使用公共void checkPermission(权限烫发); 权限 java.awt.AWTPermission "accessClipboard";
https://stackoverflow.com/questions/60012105
复制相似问题