org.eclipse.persistence.internal.helper.DatabaseTable local class incompatible

来源:互联网 发布:视频放慢软件手机软件 编辑:程序博客网 时间:2024/06/03 19:41





java.io.InvalidClassException: org.eclipse.persistence.internal.helper.DatabaseTable; local class incompatible: when publishing a BPM project to MDS (文档 ID 1561979.1)




修改时间:2013-6-14类型:PROBLEM






APPLIES TO:


Oracle Business Process Management Suite - Version 11.1.1.6.0 to 11.1.1.7.0 [Release 11gR1]
Information in this document applies to any platform.
SYMPTOMS


 When publishing a BPM project from Studio the following exception is thrown:
Caused by: java.rmi.UnmarshalException: Incoming message header or 
abbreviation processing failed ; nested exception is:


              java.io.InvalidClassException: 
org.eclipse.persistence.internal.helper.DatabaseTable; local class 
incompatible: stream classdesc serialVersionUID = 7408378167056177847, local 
class serialVersionUID = -8219935847209476671
 
CHANGES


The project has been edited in the BPM Composer  and in BPM Studio.
CAUSE


Although the problem couldn't be recreated by the development team on demand, from the exception is clear that the root cause of the problem is the differnce of the version of the org.eclipse.persistence jar distributed with Oracle JDeveloper and Oracle WLS.
The Oracle Jdeveloper 11.1.1.6 and 11.1.1.7 comes withorg.eclipse.persistence_1.1.0.0_2-1.jar and includes theorg.eclipse.persistence.internal.helper.DatabaseTable with static final long
serialVersionUID = -8219935847209476671L;
The Oracle WLS 11.1.1.6 comes with org.eclipse.persistence_1.2.0.0_2-3 and includesorg.eclipse.persistence.internal.helper.DatabaseTable with    static final long
serialVersionUID = 7408378167056177847L;
When and object of this class is class is serialized by the Composer, it uses the WLS supplied class.
When that object is deserialized by the Studio, the serialVersionUID  mismatches and the java.io.InvalidClassException: is thrown by the JVM.
SOLUTION


The solution is to ensure that both WLS and JDev use the same version of theorg.eclipse.persistence.internal.helper.DatabaseTable class.
Since the jar installed by the WLS is newer than the jar installed by the Jdeveloper it makes more sense to recplace replace the org.eclipse.persistence_1.1.0.0_2-1.jar  in Jdeveloper with the org.eclipse.persistence_1.2.0.0_2-3 from WLS.
- Shut down the Jdeveloper
- Move the org.eclipse.persistence_1.1.0.0_2-1.jar from {Jdeveloper Home}/modules to a backup location.
- Copy the org.eclipse.persistence_1.2.0.0_2-3.jar   from {WLS Home}/modules to {Jdeveloper Home}/modules.
- Start the Jdeveloper.
If after that steps you still see the same exception, please verify the serial version of the org.eclipse.persistence.jar located on both {Jdeveloper Home}/modules  and {WLS Home}/modules directories.Also check that there are no old versions of the jar ( org.eclipse.persistence_1.1.0.0_2-1.jar   ) in the Jdeveloper classpath
If some your project requires the specific version of theorg.eclipse.persistence_1.1.0.0_2-1.jar or the above operation cannot be performed on your installation by some other reason, please contact the JDeveloper support
REFERENCES




0 0