我正在尝试在 oracle 中使用第三方 Java 库。该库似乎与我们的 Oracle 10g 服务器托管的相同 1.4 版本的 jvm 兼容,因为它在 Oracle 之外运行良好,所以我觉得我应该能够让它工作。这个库最终发出了基于 SOAP 的 http 请求,当我在 Oracle 中运行时,我得到了类解析错误。
这是显示差异的一行:
Class msgfact = Class.forName("com.sun.xml.messaging.saaj.soap.MessageFactoryImpl");
我尝试使用 loadjava 实用程序将这些库注册到 Oracle 中,我得到了我认为成功的结果:
C:\>loadjava -verbose -schema MYUSER -user MYUSER/MYPWD@dbinstance -force saaj-impl.jar
看起来一切都已加载,我可以在该列表中看到这个 MessageFactoryImpl 类。但后来我尝试从 Oracle SQL 运行这行代码(在我编写并加载了 loadjava 的另一个类中),这一行抛出 ClassNotFoundException (java.lang.ClassNotFoundException: com/sun/xml/messaging/saaj/soap/MessageFactoryImpl )。
然后我回去尝试在 loadjava 命令行中添加“-resolve”开关。就像这些 saaj 类正在注册一样,但它们没有正确解析。
我怎样才能成功地将这些 saaj 类导入 Oracle,或者如果由于某种原因 Oracle 已经加载了这些类,我怎样才能说服我自己的代码成功使用现有的类?
FWIW,我已经采取措施确保授予了适当的套接字权限,并且我的代码可以成功地向目标 url 发出通用 http 请求。它只是在使用库的 SOAP 堆栈来实现它时遇到了麻烦。
编辑:这是我的 loadjava 结果示例。这似乎准确地显示了失败的原因,但我很困惑为什么这些特定类在预解决步骤中似乎得到正确处理时没有得到解决。我在这里删除了大约 80% 的文件,但还有其他类显示相同的类解析问题。
参数:'-verbose''-schema''MYSCHEMA''-user''MYSCHEMA/MYSCHEMA@actest''-resolve''-force''saaj-impl.jar' [剪辑] 创建:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/EnvelopeFactory 加载:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/EnvelopeFactory 创建:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/GifDataContentHandler 加载:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/GifDataContentHandler 创建:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/JpegDataContentHandler 加载:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/JpegDataContentHandler 创建:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageFactoryImpl 加载:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageFactoryImpl 创建:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl 加载:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl [剪辑] 解决: MYSCHEMA.com/sun/xml/messaging/saaj/soap/AttachmentPartImpl 类 解决:类MYSCHEMA.com/sun/xml/messaging/saaj/soap/Envelope 解决:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/EnvelopeFactory 错误:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/EnvelopeFactory ORA-29534: 引用的对象 MYSCHEMA.com/sun/xml/messaging/saaj/soap/SOAPPartImpl 无法解析 解决: MYSCHEMA.com/sun/xml/messaging/saaj/soap/GifDataContentHandler 类 解决: MYSCHEMA.com/sun/xml/messaging/saaj/soap/JpegDataContentHandler 类 解决: MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageFactoryImpl 类 错误:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageFactoryImpl ORA-29534: 引用的对象 MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl 无法解析 错误:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl ORA-29534: 引用的对象 MYSCHEMA.com/sun/xml/messaging/saaj/soap/impl/EnvelopeImpl 无法解析 错误:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl$1 ORA-29534: 引用的对象 MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl 无法解析 跳过:类 MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl$2 [剪辑] 以下操作失败 MYSCHEMA.com/sun/xml/messaging/saaj/soap/EnvelopeFactory 类:分辨率 MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageFactoryImpl 类:分辨率 MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl 类:分辨率 MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl$1 类:分辨率 [剪辑] exiting :处理过程中发生故障