如何读取存储在oracle数据库中的java类中的剪贴板文本?

时间:2012-11-26 12:17:35

标签: java oracle plsql

我有一个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()时,它执行完美。

谢谢

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

以下是Oracle documentation的摘录。

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