2010-10-14 15 views
7

Prima Eclipse:Eclipse Google -App -Engine "non aumenterà"

non può sbarazzarsi di questo errore ... provato ogni soluzione suggerita su google ..

classe persistente "Classe com .blahb.blahblah.master.UserToken non sembra essere stato migliorato.Puoi voler eseguire l'enhancer e verificare la presenza di errori nell'output. " non ha una tabella nel database, ma l'operazione lo richiede. Si prega di verificare le specifiche del MetaData per questa classe.

List of 500 lines of exceptions... 
*Caused by: 
javax.jdo.JDOUserException: Persistent class "Class com.blahb.blahblah.master.UserToken does not seem to have been enhanced. You may want to rerun the enhancer and check for errors in the output." has no table in the database, but the operation requires it. Please check the specification of the MetaData for this class. 
    at org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:375) 
    at org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:230) 
    at com.gulfnet.gulfstar.master.Master.getUserToken(Master.java:645) 
    at org.apache.jsp.top_jsp._jspService(top_jsp.java:68) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) 
    at com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet* 

mio collaboratore ha questo stesso progetto sul suo PC Windows e funziona benissimo ...

ho provato tre diversi Linux, Mac, finestre, 3 versioni differenti eclissi del PC, 20 diversi modi di importare, creare nuovi progetti, ecc ....

Sì, il percorso .class è stato corretto per riflettere la posizione corretta di tutti i file jar. Ho provato ad aggiungere ogni singola classe, java, jar come suggerito su uno dei blog di Google alla classe/buildpath (finestra -> pref -> google -> orm) nulla ...

E dov'è questa maledetta "Enhancer Console" che supponiamo di essere in Eclipse ...? Sto utilizzando l'ultimo Eclipse, con TUTTI i plugin per Google-app-engine ..

Qualche idea ...? Nessuno ..?

Grazie!

risposta

0

ho avuto t egli stesso errore e nel mio caso è stato soluzione solo fare classe non persistente commentando questa linea:

@PersistenceCapable(identityType = IdentityType.APPLICATION) 

Quindi eseguire la mia domanda e ottenere un errore circa la persistenza, fermarlo, rimuovere il commento riga precedente ed eseguire di nuovo app.

0

Questo problema è stato risolto per me con l'aggiunta di una chiave primaria, in questo modo:

@PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Long id;

1

Fare clic destro sul progetto, quindi Proprietà> Costruttori. C'è un punto come "Missing Builder (org.datanucleus.ide.eclipse.enhancerbuilder)"?

Se si crea un nuovo Web progetto di applicazione, facendo in modo che "l'uso di Google Web Toolkit" e "Usa Google App Engine" sono controllati, e poi guardare di nuovo in Proprietà> Costruttori, vuol poi dire "Enhancer" lì invece di "Mancante costruttore"?

Se sì, una soluzione è sicuramente quella di creare un nuovo progetto da zero e quindi trasferire manualmente il contenuto dal vecchio progetto in quello nuovo. Semplicemente importando il vecchio progetto in un altro Eclipse non funziona, il potenziatore non sarà ancora lì.

3

Il problema è che Enhancer per DataNucleus viene rimosso dall'elenco di Builder per il progetto. Per me tutto il progetto pulito, ricostruito, ecc. Non ha aiutato. Quello che dovete fare è quello di (1) Creare un nuovo progetto di GAE di esempio, aprire il file ".project" di quel progetto in editor di testo, copiare il testo da lì:

<buildCommand> 
    <name>com.google.appengine.eclipse.core.enhancerbuilder</name> 
    <arguments></arguments> 
</buildCommand> 

Ora copiare questo al fondo dell'elenco di builder nel proprio file .project. Ora DataNucleus dovrebbe funzionare correttamente. Non ho idea del perché a volte deappears.

1

Aggiornamento per l'ultima versione di appengine java sdk risolto per me.

1

La modifica della versione dell'SDK ha funzionato per me.

È interessante notare che stavo già utilizzando l'ultima versione. Il ripristino della versione precedente era l'unico modo per attivare il passaggio "Migliora". Questo era con uno script di gradle build.