数据核心增强器与App Engine不兼容。

3

我目前正在开发一款使用Java编写、使用Spring、JPA、AppEngine和Datanucleus的Web应用程序。一切都进展顺利,直到上周突然什么都无法编译了(甚至包括SVN上的旧版本)。

我目前使用的版本如下:

  • datanucleus: 3.2.5
  • appengine: 1.8.1
  • datanucleus-appengine: 2.1.2
  • datanucleus-jpa: 2.1.8
  • datanucleus-api-jpa: 3.3.0-m1
  • datanucleus-maven-plugin: 3.3.0-m1

还有其他依赖项,但我认为列表中的是最重要的。所有内容均使用Maven编译。当我运行maven clean installmaven datanucleus:enhance时,增强器会崩溃:

[ERROR] --------------------
[ERROR]  Standard error from the DataNucleus tool + org.datanucleus.enhancer.DataNucleusEnhancer :
[ERROR] --------------------
[ERROR] Exception in thread "main" java.lang.NoSuchMethodError: org.datanucleus.metadata.MetaDataManager.getOMFContext()Lorg/datanucleus/OMFContext;
        at org.datanucleus.jpa.metadata.JPAAnnotationReader.processClassAnnotations(JPAAnnotationReader.java:199)
        at org.datanucleus.metadata.annotations.AbstractAnnotationReader.getMetaDataForClass(AbstractAnnotationReader.java:126)
        at org.datanucleus.metadata.annotations.AnnotationManagerImpl.getMetaDataForClass(AnnotationManagerImpl.java:171)
        at org.datanucleus.metadata.MetaDataManager.loadAnnotationsForClass(MetaDataManager.java:2757)
        at org.datanucleus.metadata.MetaDataManager.loadPersistenceUnit(MetaDataManager.java:1015)
        at org.datanucleus.enhancer.DataNucleusEnhancer.getFileMetadataForInput(DataNucleusEnhancer.java:796)
        at org.datanucleus.enhancer.DataNucleusEnhancer.enhance(DataNucleusEnhancer.java:513)
        at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1281)

[ERROR] --------------------

它还会出现一些其他错误:
Extension Point "org.datanucleus.implementation_creator" not registered, but plugin "org.datanucleus.enhancer" defined in file:/D:/FBLAAUW/.m2/repository/org/datanucleus/datanucleus-enhancer/3.1.1/datanucleus-enhancer-3.1.1.jar refers to it.

并且存在以下几种错误(约100个)

ERROR DataNucleus.Persistence  - User-defined type mapping class "org.datanucleus.store.types.sco.simple.Collection" was not found. Please check the mapping file class specifications and your CLASSPATH. The class must be in the CLASSPATH.

我正在使用JRE 1.7,但我也尝试过使用JRE 1.6(仍然无法工作)。我猜测使用的版本不兼容,但我不确定。有人对此有什么想法吗?

1个回答

2
建议您整理使用的jar包版本。 这个页面说明了Google的“datanucleus-appengine”与DataNucleus项目jar包的兼容性。

谢谢DataNucleus,确实是datanucleus-appengine jar与其他部分产生了干扰。最新版本的datanucleus-appengine尚未在maven存储库中,因此应使用所有其他依赖项的旧版本。感谢提供链接!使用版本3.1.1的datanucleus解决了我的问题。 - frbl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接