Я хочу использовать DataNucleus JDO версию 3.2.8 с App Engine, чтобы избежать RDBMS строку BigInt проблемы (см https://stackoverflow.com/questions/21588107/datanucleus-jdo-map-string-to-mysql-type-bigint-in-app-engine)DataNucleus Enhancer Неожиданное исключение
Я скачал DataNucleus App Engine плагин здесь http://www.datanucleus.org/products/accessplatform/datastores/appengine.html и создали «v3 папку 'в [AppEngine SDK]/lib/opt/tools/datanucleus и [AppEngine SDK]/lib/opt/user/datanucleus, где я добавляю плагин, datanucleus-core, datanucleus rdbms, jdo api jars в версии 3.2.8, а также как «jdo-api-3.0.1.jar», который был также в папке v2 Я также переключился с v2 на v3 в свойствах проекта, а проект WEB-INF/lib/содержит новые банки.
, когда я пытаюсь улучшить классы Datanucleus Enhancer 3.2.8. выдает неожиданное исключение со следующим журналом:
java.lang.RuntimeException: Unexpected exception
at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:76)
at com.google.appengine.tools.enhancer.Enhance.<init>(Enhance.java:71)
at com.google.appengine.tools.enhancer.Enhance.main(Enhance.java:51)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:74)
... 2 more
Caused by: java.lang.NoSuchFieldError: updateLock
at org.datanucleus.api.jdo.metadata.JDOMetaDataManager.getMetaDataForClassInternal(JDOMetaDataManager.java:440)
at org.datanucleus.metadata.MetaDataManager.getMetaDataForClass(MetaDataManager.java:1488)
at org.datanucleus.metadata.MetaDataManager.loadClasses(MetaDataManager.java:545)
at org.datanucleus.enhancer.DataNucleusEnhancer.getFileMetadataForInput(DataNucleusEnhancer.java:737)
at org.datanucleus.enhancer.DataNucleusEnhancer.enhance(DataNucleusEnhancer.java:513)
at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1281)
... 7 more
Что мне не хватает, чтобы заставить его работать? Большое спасибо за помощь.
с использованием смешанных/непоследовательных версий банок. Если в CLASSPATH нет банок 3.0/3.1 DN, все 3.2 должны быть согласованными (например, последними) – DataNucleus
Я не вижу, где я использую разные версии. Я заменил «jdo-api-3.0.1.jar» на «jdo-api-3.1-rc1.jar сейчас и проблема все еще существует. Я думал, что плагин App Engine 3 предназначен для использования с Datanucleus 3.2/3.3, который реализует jdo 3.1 ? – Philipp
org.datanucleus.api.jdo.metadata.JDOMetaDataManager.getMetaDataForClassInternal NoSuchFieldError, поэтому суперкласс (в datanucleus-core) из какого-то более старого варианта. QED. Где он есть, только вы можете видеть. – DataNucleus