2012-04-04 2 views
1

Als ich das SDK Orm Jar zu v2 (Standard einschließlich von SDK) geändert habe, habe ich einige Exception Info.Es ist über die Datanucleus-Core-3.0.6.jar hat ben registriert bla bla .... Nach der Suche wusste ich, dass es ein Fehler in 3.0.6 war. Also, ich relepace es durch datanucleus-core-3.0.10.jar. Aber es ist nicht Erfolg, wenn die pojo Enhancer kompilierenGAE, einige Ausnahme nach dem Upgrade datanucleus jar Pakete

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:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:74) 
    ... 2 more 
Caused by: java.lang.NoSuchMethodError: org.datanucleus.plugin.PluginManager.<init>(Lorg/datanucleus/PersistenceConfiguration;Lorg/datanucleus/ClassLoaderResolver;)V 
    at org.datanucleus.OMFContext.<init>(OMFContext.java:159) 
    at org.datanucleus.enhancer.DataNucleusEnhancer.<init>(DataNucleusEnhancer.java:172) 
    at org.datanucleus.enhancer.DataNucleusEnhancer.<init>(DataNucleusEnhancer.java:150) 
    at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1157) 
    ... 7 more 

dies ist meine JAR-Datei im Verzeichnis \ lib \ user \ orm

asm-3.3.1.jar 
datanucleus-api-jdo-3.0.5.jar 
datanucleus-api-jpa-3.0.6.jar 
datanucleus-appengine-2.0.0-final.jar 
datanucleus-core-3.0.10.jar 
geronimo-jpa_2.0_spec-1.0.jar 
jdo-api-3.0.jar 
transaction-api-1.1.jar 

ich für den ganzen Tag gesucht hat. Weiß jemand welches Problem damit?

Antwort

0

Sie haben alte Versionen von Datanucleus-Kern und Datanucleus-Enhancer im CLASSPATH irgendwo. "OMFContext" von diesem Stack-Trace hat in DataNucleus für eine sehr lange Zeit nicht existiert.

0

Ich denke ich weiß, warum es nicht funktioniert, die Appengine mit einem neuen Datanucleus zu aktualisieren. Es ist kein Klassenpfadeintrag! Ich entdeckte, dass in der ant-macro.xml, die den Enhancing-Schritt auslöst, gibt es eine Verbindung zu den appengine-tools-api.jar und dort ist die Klasse EnhancerTask. Dies ist wahrscheinlich ein Link zur alten Version, da der neue datanucleus-enhancer-3.0.1.jar eine eigene EnhancerTask Klasse hat. Die einzige Möglichkeit, die neuen Versionen von datanucleus mit der alten appengine sdk (im Gegensatz zu http://code.google.com/p/datanucleus-appengine/wiki/HowToUpdateTheSDKWithANewPluginVersion) zu verwenden, besteht darin, den Enhancement-Schritt entweder unter ant (https://developers.google.com/web-toolkit/doc/1.6/tutorial/appengine) oder wahrscheinlich die eclipse-datanucleus-plugin. Leider funktioniert dieses Plugin in meinem Eclipse nicht richtig. Nach der Installation/Konfiguration des Plugins gibt es noch kein Projekt-Kontextmenü "datanucleus", wo ich die Unterstützung hinzufügen soll. Also werde ich die ant Version versuchen.