复制到全局剪贴板不适用于 Ubuntu 中的 Java
来自独立应用程序的以下代码适用于 ubuntu:
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
public class ClipboardTest {
public static void main(String[] args) throws Exception {
Clipboard clipBoard = Toolkit.getDefaultToolkit().getSystemClipboard();
// print the last copied thing
System.out.println(clipBoard.getContents(null).getTransferData(DataFlavor.stringFlavor));
StringSelection data = new StringSelection("NOW");
clipBoard.setContents(data, data);
// prints NOW
System.out.println(clipBoard.getContents(null).getTransferData(DataFlavor.stringFlavor));
}
}
将(Ctrl+V)粘贴到其他应用程序中不会产生任何结果;我期待“现在”。再次调用上述代码会给出以下异常:
Exception in thread "main" java.awt.datatransfer.UnsupportedFlavorException: Unicode String
at sun.awt.datatransfer.ClipboardTransferable.getTransferData(ClipboardTransferable.java:160)
作为一个独立的应用程序,即使在 2011 年安全更改之后,这也应该有效。通过Ctrl+C从JTextField内部复制,然后粘贴到其他地方是有效的。
在ubuntu 11.04上使用最新的java7(jdk1.7.0_10)和jdk1.6.0_33都失败了;它应该在Windows 7和具有最新java7的Windows 7和具有java6_37的mac osx 10.6上工作并且确实可以正常工作。还尝试了 xubuntu 12.04 与这些 java,它在那里不起作用。这是一个 linux/ubuntu 错误吗?