2012-07-01 3 views
5

У меня возникли трудности с правильной работой Datanucleus 2 с улучшением классов на GAE 1.7.0 в Eclipse с использованием плагина Datanucleus. Это работало отлично в старых версиях GAE, когда я следовать действиям вручную здесь:Datanucleus с использованием неправильного энхансера в Google App Engine 1.7

http://www.datanucleus.org/products/accessplatform/guides/eclipse/index.html

Но поскольку при обновлении, GAE теперь включает в себя эту LIBS (новые версии из них она выглядит), а также имеет GAE новый флаг «энхансер», который вы можете установить. Однако я не могу найти этот флаг в Eclipse. Оказывается, что GAE еще включая v1 LIBS, когда я хочу, LIBS V2 и DataNucleus испытывает конфликты в соответствии с этой ошибкой:

Jul 1, 2012 5:59:55 PM org.datanucleus.enhancer.DataNucleusEnhancer <init> 
INFO: DataNucleus Enhancer : Using ClassEnhancer "ASM" for API "JPA" 
Exception in thread "main" java.lang.NoSuchFieldError: NUCLEUS_CONTEXT_LOADER 
    at org.datanucleus.NucleusContext.<clinit>(NucleusContext.java:73) 
    at org.datanucleus.enhancer.DataNucleusEnhancer.<init>(DataNucleusEnhancer.java:171) 
    at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1265) 

Я пробовал много разных вещей. Я пробовал использовать все значения по умолчанию. Я попробовал добавить v2 libs к записям классов пути Datanucleus. Я попытался удалить v1 libs в GAE 1.7.0 SDK как в src, так и в libs. Но каким-то образом GAE все еще тянет (или пытается потянуть за V1 libs). Я даже попробовал более старый метод настройки конфигурации вручную, как указано в приведенной выше ссылке. Это немного расстраивает, поскольку кажется, что я сейчас в ситуации, когда я вообще не могу использовать эти библиотеки. По крайней мере, со старыми версиями GAE я мог бы вручную настроить его на работу. Теперь ничего не работает. Любые предложения?

+0

Что такое "DataNucleus 2"? DataNucleus в настоящее время находится в версиях 3.0 и 3.1. Плагин Googles находится в версии 2.0.1.1 (с использованием DataNucleus v3.0.x) – DataNucleus

+0

Ahh right. Да, версия DataNucleus включена v3.0.x. Я смог заставить его работать, вручную удалив v1 libs из src и lib в GAE версии 1.7.0, чтобы GAE перестала пытаться помещать их в WEB-INF/lib. Я получал конфликты с v3 и v1 DataNucleus libs в пути к классам. GAE заявляет, что вы можете добавить флаг энхансера, чтобы сообщить, какие версии использовать, но я не вижу, как использовать этот флаг с Eclipse, чтобы он не копировал эти библиотеки. Поэтому обходной путь, похоже, работает для меня. Это не идеально, но это сработает. – DavidB

+0

@DataNucleus Когда я просматриваю папку appengine 1.7, банки Datanucleus являются datanucleus-core-1.1.5.jar, datanucleus-jpa-1.1.5 и т. Д. Что вы подразумеваете под плагином Google, использующим Datanucleus v3.0.x? – xybrek

ответ

7

Я ударил эту же ошибку и был в состоянии решить это в моем проекте:.

  • Делать то, что DavidB предложил в комментариях, без изменения настроек DataNucleus JPA в настройках
  • Удаление всех банок «V1» из войны/WEB-INF/lib

Чтобы уточнить предложение DavidB, откройте каталог, в котором хранится ваш проект. Будет папка с именем «.settings», откройте это и отредактируйте com.google.appengine.eclipse.core.prefs. Просто измените третью строку из gaeDatanucleusVersion = v1 к gaeDatanucleusVersion = v2

После того, как вы сделали это, удалите следующие банки из вас война/WEB-INF/Библиотека каталога:

  • datanucleus- AppEngine-1.0.10.final.jar
  • DataNucleus-ядро-1.1.5.jar
  • DataNucleus-JPA-1.1.5.jar
  • Джеронимо-jpa_3.0_spec-1.1.1.jar
  • Джеронимо-jta_1.1_spec-1.1.1.jar
  • jdo2-апи-2,3-eb.jar

Restart затмение, и вы должны быть хорошо идти.

+0

Также проверьте библиотеки путей сборки. В моем случае было два экземпляра SDK для App Engine ... один с v1, а другой с v2. –

+1

Я наткнулся на эту же проблему в GAE 1.7.2, и мне пришлось удалить строку «filesCopiedToWebInfLib» ..... filesCopiedToWebInfLib = appengine-api-labs.jar | appengine-endpoints.jar | appengine-jsr107cache-1.7 .2.1.jar | jsr107cache-1.1.jar | AppEngine-апи-1,0-СДК-1.7.2.1.jar | DataNucleus-AppEngine-1.0.10.final.jar | DataNucleus-ядро-1.1.5.jar | DataNucleus-JPA -1.1.5.jar | geronimo-jpa_3.0_spec-1.1.1.jar | geronimo-jta_1.1_spec-1.1.1.jar | jdo2-api-2.3-eb.jar – Santthosh

+1

У меня была проблема, когда затмение начинало все внезапно искать geronimo-jpa_3.0_spec-1.1.1.jar под v1. удаление v1 в папке плагина GAE SDK разрешило его. – AsafK

Смежные вопросы