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