How to avoid the java.lang.IncompatibleClassChangeError
549065Nov 29 2006 — edited Dec 5 2006Hi all!
I have problem to make my client Java application to work under Oracle JVM. This application works fine as standalone java class. In this mode it communicates fine with a web server.
I have loaded all needed jar files into my user (sample) using the following command:
Loadjava -thin -r -v -f -user sample/sample@<my_url>:1521:usr10se <jar files and classes>
When I call my public method from a PL/SQL function I receive the following error:
ERROR at line 1:
ORA-29532: Java call terminated by uncaught Java exception:
java.lang.IncompatibleClassChangeError
The following is a trace context:
*** 2006-11-29 17:28:10.134
*** ACTION NAME:() 2006-11-29 17:28:10.134
*** MODULE NAME:(SQL*Plus) 2006-11-29 17:28:10.134
*** SERVICE NAME:(…) 2006-11-29 17:28:10.134
*** SESSION ID:(49.5) 2006-11-29 17:28:10.134
java.lang.IncompatibleClassChangeError
at org.apache.axis.encoding.SerializationContext.startElement(SerializationContext.java:1122)
at org.apache.axis.message.MessageElement.outputImpl(MessageElement.java:1253)
at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
at org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:554)
at org.apache.axis.Message.getContentType(Message.java:486)
at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:343)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:1792)
at org.uddi4j.transport.ApacheAxisTransport.send(ApacheAxisTransport.java:87)
at org.uddi4j.transport.TransportBase.send(TransportBase.java:53)
at org.uddi4j.client.UDDIProxy.send(UDDIProxy.java:1778)
at org.uddi4j.client.UDDIProxy.find_tModel(UDDIProxy.java:823)
at …. Call from my class
I suspected multiple definitions of the SerializationContext.class in my jar files but was wrong: there is only one definition in the axis.jar file. For some reasons this jar file contained SerializationContext.class and SerializationContext.java modules, but I resolved this problem earlier: loadjava does not allow loading the both.
What can be cause of the java.lang.IncompatibleClassChangeError problem?
What I have to do to make my class work from Oracle JVM?
Thanks,
Roman