2012-07-01 8 views
5

Tengo dificultades para hacer que Datanucleus 2 funcione correctamente con la mejora de las clases en GAE 1.7.0 en Eclipse utilizando el complemento Datanucleus. Esto funcionó bien en versiones anteriores de GAE cuando yo la seguiría los pasos manuales aquí:Datanucleus utilizando un potenciador incorrecto en Google App Engine 1.7

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

Pero desde la actualización, GAE ahora incluye estas librerías (nuevas versiones de ellos se ve como), y también tiene GAE una nueva bandera de "potenciador" que puede establecer. Sin embargo, no puedo encontrar de todos modos para configurar esta bandera en Eclipse. Parece que GAE todavía está incluyendo la libs v1 cuando quiero las librerías V2 y DataNucleus está teniendo conflictos de acuerdo con este error:

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) 

He intentado muchas cosas diferentes. Intenté usar todos los valores predeterminados. He intentado agregar v2 libs a las entradas Classpath de Datanucleus en tiempo de ejecución. He intentado eliminar las bibliotecas de v1 en el SDK de GAE 1.7.0 tanto en src como en libs. Pero de alguna manera GAE todavía se está deteniendo (o tratando de detener las librerías de V1. Incluso he probado el método más antiguo de configurar manualmente la configuración según lo especificado en el enlace de arriba. Es un poco frustrante, ya que parece que estoy ahora En una situación en la que no puedo usar estas librerías, al menos con las versiones anteriores de GAE, podía configurarlo manualmente. Parece que nada funciona ahora. ¿Alguna sugerencia?

+0

¿Qué es "DataNucleus 2"? DataNucleus se encuentra actualmente en la versión 3.0 y 3.1. El complemento de Google está en la v 2.0.1.1 (usando DataNucleus v3.0.x) – DataNucleus

+0

Ahh, a la derecha. Sí, la versión de DataNucleus incluida es v3.0.x. Pude hacerlo funcionar borrando manualmente las bibliotecas de v1 de src y lib en GAE versión 1.7.0 para que GAE dejara de intentar ponerlas en WEB-INF/lib. Obtuve conflictos con las bibliotecas de DataNucleus v3 y v1 en classpath. GAE indica que puede agregar un indicador de potenciador para indicarle qué versiones usar, pero no puedo ver cómo usar ese indicador con Eclipse para evitar que copie esas librerías. Entonces la solución alternativa parece funcionar para mí. No es ideal, pero funcionará. – DavidB

+0

@DataNucleus Cuando examino la carpeta appengine 1.7, los archivos jar de Datanucleus son datanucleus-core-1.1.5.jar, datanucleus-jpa-1.1.5, etc. ¿Qué quiere decir con el complemento de Google con Datanucleus v3.0.x? – xybrek

Respuesta

7

Apagué este mismo error y estaba capaz de resolverlo en mi proyecto por:.

  • Hacer lo DavidB sugerido en los comentarios, sin modificar la configuración de DataNucleus la APP en las preferencias
  • Eliminación de todas las jarras "V1" de la guerra/WEB-INF/lib

Para aclarar la sugerencia de DavidB, abra el directorio que contiene su proyecto. Habrá una carpeta llamada ".settings", ábrala y edite com.google.appengine.eclipse.core.prefs. Sólo cambia la tercera línea de gaeDatanucleusVersion = v1 a gaeDatanucleusVersion = v2

Una vez hecho esto, quite los siguientes frascos de usted war/WEB-INF/lib:

  • datanucleus- appengine-1.0.10.final.jar
  • DataNucleus-core-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

Reiniciar Eclipse y usted debe ser bueno para ir.

+0

También verifique las bibliotecas de ruta de compilación. En mi caso, había dos librerías SDK de App Engine ... una con v1 y otra con v2. –

+1

Me encontré con este mismo problema en GAE 1.7.2 y tuve que eliminar la línea 'filesCopiedToWebInfLib' ..... filesCopiedToWebInfLib = appengine-api-labs.jar | appengine-endpoints.jar | appengine-jsr107cache-1.7 .2.1.jar | jsr107cache-1.1.jar | appengine-api-1.0-sdk-1.7.2.1.jar | datanucleus-appengine-1.0.10.final.jar | datanucleus-core-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

Tuve un problema donde el eclipse comenzó todo De repente, busque geronimo-jpa_3.0_spec-1.1.1.jar en v1. eliminar v1 en la carpeta de plugins GAE SDK lo resolvió. – AsafK