2012-07-01 7 views
5

Ho difficoltà a far funzionare correttamente Datanucleus 2 con l'ottimizzazione delle classi su GAE 1.7.0 in Eclipse utilizzando il plug-in Datanucleus. Questo ha funzionato bene nelle vecchie versioni di GAE in cui avrei seguito le fasi manuali qui:Datanucleus con enhancer errato in Google App Engine 1.7

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

Ma dal momento che l'aggiornamento, GAE ora include queste librerie (versioni più recenti di loro sembra che), e anche GAE ha un nuovo flag "enhancer" che puoi impostare. Non riesco comunque a trovare comunque questa bandiera in Eclipse. Sembra che GAE è ancora compreso il libs v1 quando voglio le librerie V2 e DataNucleus sta avendo i conflitti in base a questo errore:

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) 

Ho provato molte cose diverse. Ho provato a utilizzare tutti i valori predefiniti. Ho provato ad aggiungere le librerie v2 alle voci del percorso di classe di runtime Datanucleus. Ho provato a cancellare le librerie v1 nell'SDK di GAE 1.7.0 sia in src che in libs. Ma in qualche modo GAE sta ancora tirando le somme (o cercando di scavalcare le librerie V1. Ho anche provato il vecchio metodo di configurare manualmente la configurazione come specificato dal link qui sopra.E 'un po' frustrante come sembra che io sia ora in una situazione in cui non posso usare queste librerie, almeno con le versioni precedenti di GAE, potrei impostarlo manualmente per funzionare.Niente sembra funzionare ora.Tutti i suggerimenti?

+0

Che "DataNucleus 2"? DataNucleus è attualmente alla versione 3.0 e 3.1. Il plug-in di Google è alla v 2.0.1.1 (utilizzando DataNucleus v3.0.x) – DataNucleus

+0

Ahh right. Sì, la versione di DataNucleus inclusa è v3.0.x. Sono stato in grado di farlo funzionare cancellando manualmente le librerie v1 da src e lib in GAE versione 1.7.0 in modo che GAE smettesse di provare a metterle in WEB-INF/lib. Stavo ottenendo conflitti con entrambe le librerie DataNucleus v3 e v1 sul classpath. GAE afferma che è possibile aggiungere un flag enhancer per indicare quali versioni utilizzare, ma non riesco a vedere come usare quel flag con Eclipse per impedirgli di copiare quelle librerie. Quindi la soluzione sembra funzionare per me. Non è l'ideale, ma funzionerà. – DavidB

+0

@DataNucleus Quando sfoglio la cartella appengine 1.7, i vasi Datanucleus sono datanucleus-core-1.1.5.jar, datanucleus-jpa-1.1.5, ecc. Cosa intendi per plugin Google utilizzando Datanucleus v3.0.x? – xybrek

risposta

7

Ho colpito questo stesso errore ed è stato in grado di risolvere nel mio progetto:.

  • Fare ciò che DavidB suggerito nei commenti, senza modificare le impostazioni DataNucleus JPA nelle preferenze
  • Cancellazione di tutti i vasi "V1" dalla guerra/WEB-INF/lib

Per chiarire il suggerimento di DavidB, aprire la directory che contiene il progetto. Ci sarà una cartella chiamata ".settings", aprila e modifica com.google.appengine.eclipse.core.prefs. Basta cambiare il terza linea da gaeDatanucleusVersion = v1-gaeDatanucleusVersion = v2

Una volta che avete fatto questo, rimuovere le seguenti barattoli da te guerra/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

riavviare Eclipse e si dovrebbe essere pronti per partire.

+0

Controllare anche le librerie del percorso di generazione. Nel mio caso c'erano due librerie SDK App Engine ... una con v1 e l'altra con v2. –

+1

Mi sono imbattuto in questo stesso problema in GAE 1.7.2 e ho dovuto eliminare la riga '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

Ho avuto un problema in cui eclissi ha iniziato tutto un improvviso per cercare geronimo-jpa_3.0_spec-1.1.1.jar sotto v1. l'eliminazione di v1 sotto la cartella del plugin dell'SDK di GAE l'ha risolto. – AsafK