使用getSystemClipboard()时的HeadLessException .setContents(..)

时间:2011-11-22 07:54:07

标签: java websphere clipboard

我有一个Java应用程序,其中包含一行代码:

String myString="Some Text";
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(myString, null);

当我使用Java 5在Eclipse中运行我的应用程序时,这非常有用。当我创建一个.ear文件并将其部署在websphere上时,我得到一个如下所示的异常:

Caused by: java.awt.HeadlessException
      at sun.awt.HeadlessToolkit.getSystemClipboard(HeadlessToolkit.java:306)
      at something.something.something.package$MyButtonListener.buttonClick(View.java:271)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:618)
      at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:512)

我似乎无法解决这个问题,有没有人有任何想法?我知道它正在尝试在服务器上设置剪贴板,但是如何在webapplications计算机的用户上设置它呢?

2 个答案:

答案 0 :(得分:3)

您的WebSphere环境没有基于监视器的GUI(“head”)。

您在服务器上设置剪贴板的意图是什么?

编辑:所有Toolkit方法都适用于运行Java代码的计算机。如果要操作客户端,则需要部署客户端代码。请参阅Set clipboard content in any browser

答案 1 :(得分:1)

在客户端上运行gui-application时,只能使用AWT方法。

对于服务器端应用程序,您没有那个gui,因为您只是在渲染页面。服务器实际上是无头运行的(没有连接屏幕)所以你得到一个HeadLessException。

您需要在页面中渲染一些导致复制到剪贴板的javascript或flash:How to Copy to Clipboard in JavaScript?