loadjava工具:ORA-29532:无法实例化类:weblogic.jndi.WLInitialContextFactory

loadjava工具:ORA-29532:无法实例化类:weblogic.jndi.WLInitialContextFactory,java,oracle,plsql,loadjava,Java,Oracle,Plsql,Loadjava,经过数小时的详尽研究和Oracle文档及支持页面,我们无法解决此问题 实用程序:loadjava 操作:尝试使用loadjava加载.jar文件,并使用PL/SQLAPI调用Java类。这个java类只是向JMS队列添加一个值,并返回一个状态为SUCCESS的字符串。注意:Hello.java工作成功 问题:在使用loadjava成功加载之后,当我们通过Oracle PL/SQL函数执行时,会出现以下错误 ORA-29532:Java调用被未捕获的Java异常终止:javax.jms.JMSRu

经过数小时的详尽研究和Oracle文档及支持页面,我们无法解决此问题

实用程序:loadjava

操作:尝试使用loadjava加载.jar文件,并使用PL/SQLAPI调用Java类。这个java类只是向JMS队列添加一个值,并返回一个状态为SUCCESS的字符串。注意:Hello.java工作成功

问题:在使用loadjava成功加载之后,当我们通过Oracle PL/SQL函数执行时,会出现以下错误

ORA-29532:Java调用被未捕获的Java异常终止:javax.jms.JMSRuntimeException:无法实例化类:weblogic.jndi.WLInitialContextFactory

我们的试验:我们认为它缺少一些Weblogic库。因此,我们使用loadjava实用程序分别添加了wlthint3client.jar。我们还尝试在“ORACLEHOME\jdk\jre\lib\ext”下添加wlthint3client.jar,以便在实例加载时获取它。但错误一直在发生。我们将此作为原始jar的一部分,但仍然是同一版本

我们回到了基础,创建了Hello.java和Hello.class,并使用loadjava加载它们。通过PL/SQL函数调用这个类,它成功地工作了。只有当我们加载一个.jar文件时,它才会抛出这个ContextFactory错误

步骤1:在ORACLEHOME命令提示符下:

loadjava -user userschema/password@instance -verbose -force JMessenger-1.0.jar.
它已成功加载。输出结果如下:

Classes Loaded: 97
Resources Loaded: 13
Sources Loaded: 0
Published Interfaces: 0
Classes generated: 0
Classes skipped: 0
Synonyms Created: 0
Errors: 0
步骤2:创建PL/SQL函数:

CREATE OR REPLACE FUNCTION FUN_CALL_JAVA_TST RETURN VARCHAR2 AS

LANGUAGE JAVA NAME 'xyz.abc.messenger.producer.MessageProducer.testPing() return java.lang.String';

/
步骤3:我们编写了一个调用方:

declare testoutput varchar2(100);

begin testoutput := FUN_CALL_JAVA_TST();

dbms_output.put_line(testoutput);

exception when others then

dbms_output.put_line(sqlerrm);

end;
同样的错误不断出现

  • OracleHome安装中的Java版本:Java版本“1.8.0_201”

  • Java(TM)SE运行时环境(build 1.8.0_201-b09)

  • Java HotSpot(TM)64位服务器虚拟机(构建25.201-b09,混合模式)

因此,我们确保使用正确的weblogic版本库