1

当我从 PL/SQL 调用 JAVA 类时,出现以下错误

ORA-29532 Java call terminated by uncaught java exception

我已经提到了一个 metalink 笔记 -Doc : 1420943.1

这要求检查值 ( show parameters shared_servers),如果它不为零,则设置为零。但该值已经为 0。

请帮助我确定导致问题的原因。

- - - - - - - - - - - -更多信息 - - - - - - - - - - - - - ----------

我们使用loadjava -user apps/password - force -verbose -resolve java.class将 java 类加载到 Oracle DB 中。

数据库版本 12c。

PL/SQL:

l_retCode := initialize(para_1 => l_para1,
                        Para_2 => l_para2,
                        para_3 => l_para3);

初始化函数定义如下

function initialize(para_1 VARCHAR2, para_2 VARCHAR2, para_3 VARCHAR2)
return NUMBER as LANGUAGE JAVA NAME
'com.snlp.XXWClass.initialize(java.lang.string,java.lang.string,java.lang.string) return int'

Java代码:

public static int initialize(s String, s1 String , s2 String){
  // logic goes here
}
4

2 回答 2

0

1) 在 DB中set serveroutput onexec dbms_java.set_output(10000000);它允许在 db 中查看 java 堆栈跟踪。

2)发布错误的java类。字符大小很重要。更改 java.lang.string。到 java.lang.String。

于 2017-05-23T12:55:47.340 回答
0

http://www.oracle.com/technetwork/database/enterprise-edition/calling-shell-commands-from-plsql-1-1-129519.pdf

我们需要在登录为 APPS 后给予 GRANTS(请参阅链接以获取更清晰的信息 - 无法复制粘贴这些命令,所以,我输入了 - 以下命令中可能有一些拼写错误)以下命令修复了我们 JAVA 中的许多问题来自甲骨文的电话

dbms_java.grant_permission( '<user_name>', 'SYS:java.util.PropertyPermission', '<property_name>', 'write' );

dbms_java.grant_permission( '<user_name>', 'SYS:java.util.RuntimePermission', 'writeFileDescriptor', '' );

dbms_java.grant_permission( '<user_name>', 'SYS:java.util.RuntimePermission', 'readFileDescriptor', '' );

exec DBMS_JAVA.Grant_Permission( '<user_name>', 'SYS:java.io.FilePermission','<<ALL FILES>>','read,write,execute,delete');

于 2017-10-11T11:57:22.820 回答