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

时间:2020-10-03 04:26:25

标签: java oracle plsql loadjava

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

实用程序:loadjava

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

问题:使用loadjava成功加载后,通过Oracle PL / SQL Function执行时,出现以下错误。

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运行时环境(内部版本1.8.0_201-b09)

  • Java HotSpot(TM)64位服务器VM(内部版本25.201-b09,混合模式)。

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

0 个答案:

没有答案
相关问题