如何解决BIRT和JDO类加载问题?

时间:2012-03-18 16:44:45

标签: osgi jdo birt datanucleus equinox

我试图在数据访问方法中实例化一个JDO注释和Datanucleus增强类,该方法通过自定义ODA驱动程序从BIRT报告中调用。

BIRT引擎 - > ODA驱动程序 - >数据访问类 - >新的JDOAnnotatedClass()

但是,当调用JDO注释类的构造函数时,DataNucleus注释阅读器会抛出ClassCastException。

Caused by: java.lang.ClassCastException: javax.jdo.annotations.IdentityType cannot be cast to javax.jdo.annotations.IdentityType
   at org.datanucleus.api.jdo.metadata.JDOAnnotationReader.processClassAnnotations(JDOAnnotationReader.java:171)
   at org.datanucleus.metadata.annotations.AbstractAnnotationReader.getMetaDataForClass(AbstractAnnotationReader.java:125)
   at org.datanucleus.metadata.annotations.AnnotationManagerImpl.getMetaDataForClass(AnnotationManagerImpl.java:171)
   at org.datanucleus.metadata.MetaDataManager.loadAnnotationsForClass(MetaDataManager.java:2459)
   at org.datanucleus.metadata.MetaDataManager.addAnnotationsDataToClass(MetaDataManager.java:1729)
   at org.datanucleus.metadata.ClassMetaData.populate(ClassMetaData.java:173)
   at org.datanucleus.metadata.MetaDataManager$1.run(MetaDataManager.java:2508)
... 152 more

异常消息显示为典型的类加载问题。显然,类javax.jdo.annotations.IdentityType被加载两次不同的类加载器,因此导致ClassCastException。

如何解决此问题?

0 个答案:

没有答案