0

我有一个 Java 类,它从存储在 oracle 数据库中的剪贴板中读取文本,当我尝试执行使用该类的函数时,我收到以下错误。

select texttransfer
from dual;

ORA-29532:Java 调用因未捕获的 Java 异常而终止:oracle.aurora.awt.UnsupportedOperation:不支持 GUI。

这是课程代码:

public String readClipboard() throws UnsupportedFlavorException, IOException
{
     String text = "";
     Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
     Transferable contents = clipboard.getContents(clipboard);
     text = (String)(contents.getTransferData(DataFlavor.stringFlavor));    

   return text;
}

public static String world()
{
    return "Hello world";
}

功能代码:

create or replace
FUNCTION TextTransfer RETURN VARCHAR2 AS 
LANGUAGE JAVA NAME 'TextTransfer.readClipboard() return java.lang.String';

但是,当我调用方法 world() 时,它执行得很完美。

谢谢

4

3 回答 3

1

oracle.aurora.awt.UnsupportedOperation: GUI not supported正如异常已经说过的那样,这是不可能的。在 Oracle 中,您没有窗口系统,因此您无法访问剪贴板。

于 2012-11-26T12:19:56.283 回答
1

Java 存储过程(以及 pl/sql 过程)在服务器端执行,无法访问客户端的 GUI(包括剪贴板、屏幕、音频系统等)。您真的要阅读服务器操作系统的剪贴板吗?

于 2012-11-26T17:38:13.923 回答
0

以下是Oracle 文档的摘录。

Oracle-specific Peer implementation that throws an exception, oracle.aurora.awt.UnsupportedOperation, if you execute Java code on the Oracle9i server that attempts to materialize a user interface.

Oracle9i's lack of support for materializing user interfaces in the server means that we do not pass the Java 2 Compatibility Kit tests for java.awt, java.awt.manual, and java.applet

于 2012-11-26T12:28:41.613 回答