Java 清除RCP中的系统剪贴板

Java 清除RCP中的系统剪贴板,java,swt,eclipse-rcp,clipboard,Java,Swt,Eclipse Rcp,Clipboard,我在RCP应用程序中使用剪贴板实现各种功能。 我已经编写了一些单元测试来测试这些函数的功能。它们非常简单,因为它们只在剪贴板中复制和粘贴一些数据。 问题是,这些测试偶尔会失败。我认为这是因为系统剪贴板中留下了一些数据,导致我的测试失败 因此,我尝试编写一种方法,在执行测试之前清除系统剪贴板的所有内容: protected void clearClipboard() { Display display = Display.getCurrent(); Clipboard clipb

我在RCP应用程序中使用剪贴板实现各种功能。 我已经编写了一些单元测试来测试这些函数的功能。它们非常简单,因为它们只在剪贴板中复制和粘贴一些数据。 问题是,这些测试偶尔会失败。我认为这是因为系统剪贴板中留下了一些数据,导致我的测试失败

因此,我尝试编写一种方法,在执行测试之前清除系统剪贴板的所有内容:

 protected void clearClipboard() {
    Display display = Display.getCurrent();
    Clipboard clipboard = new Clipboard(display);
    clipboard.clearContents();
    clipboard.dispose();

}
但显然,这并没有改变任何事情,而且测试一直失败。
这是清除系统剪贴板的正确方法吗?

只有当要清除的数据属于您希望清除所述内容的剪贴板时,才能清除剪贴板。根据相关官员的说法,如果情况并非如此(例如,因为其他应用程序将其放在了那里),则什么也不做。简而言之,如果你没有把它放在那里,你可能无法清除它


可能先尝试设置(=覆盖)剪贴板的内容,然后再清除,这样更有可能是您拥有该内容(但请注意上面JavaDoc中提到的关于剪贴板工具获取所有权的警告)。

这似乎有效。我正在覆盖剪贴板,然后调用Clipboard.clearContents()。所有测试现在似乎都正常工作了。