Ich entwickle eine Desktop-App mit Datanucleus und JDO für die eingebettete H2-Datenbank. Alles funktioniert gut, wenn ich es von Eclipse aus starte, aber es funktioniert nicht mehr, wenn ich versuche, ein ausführbares Jar daraus zu machen. Ich erhalte einen folgenden Fehler:Datanucleus, JDO und ausführbares jar - wie geht das?
org.datanucleus.exceptions.NucleusUserException: Persistence Verfahren zur Herstellung eines ClassLoaderResolver des Namens „jdo“ verwenden angegeben wurde noch nicht von der Datanucleus-Plugin-Mechanismus gefunden. Bitte überprüfen Sie Ihre CLASSPATH- und Plugin-Spezifikation.
Natürlich zeigt es, dass ich etwas nicht richtig konfiguriert habe - was fehlt mir? Wenn ich etwas Großes vermisste, würde es überhaupt nicht funktionieren, also nehme ich an, dass es ein fehlerhaftes ausführbares Glas ist. Ich habe diesen Fehler in anderen Apps wie JPOX gesehen, wo es behoben wurde, aber ohne irgendeine Lösung gegeben.
Whole Fehler Stacktrace:
Exception in thread "main" javax.jdo.JDOFatalInternalException: Unexpected exception caught.
at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1193)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:701)
at db.PersistenceManagerFilter.init(PersistenceManagerFilter.java:44)
at Main.main(Main.java:26)
NestedThrowablesStackTrace:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.jdo.JDOHelper$16.run(JDOHelper.java:1965)
at java.security.AccessController.doPrivileged(Native Method)
at javax.jdo.JDOHelper.invoke(JDOHelper.java:1960)
at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1166)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:701)
at db.PersistenceManagerFilter.init(PersistenceManagerFilter.java:44)
at Main.main(Main.java:26)
Caused by: org.datanucleus.exceptions.NucleusUserException: Persistence process has been specified to use a ClassLoaderResolver of name "jdo" yet this has not been found by the DataNucleus plugin mechanism. Please check your CLASSPATH and plugin specification.
at org.datanucleus.NucleusContext.<init>(NucleusContext.java:233)
at org.datanucleus.NucleusContext.<init>(NucleusContext.java:196)
at org.datanucleus.NucleusContext.<init>(NucleusContext.java:174)
at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.<init>(JDOPersistenceManagerFactory.java:364)
at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.createPersistenceManagerFactory(JDOPersistenceManagerFactory.java:294)
at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.getPersistenceManagerFactory(JDOPersistenceManagerFactory.java:195)
... 12 more
Die Linie es zu den Punkten ist PersistenceManagerFilter init-Methode:
pmf = JDOHelper.getPersistenceManagerFactory(getProperties());
Properties-Datei so aussieht:
javax.jdo.PersistenceManagerFactoryClass=org.datanucleus.api.jdo.JDOPersistenceManagerFactory
datanucleus.ConnectionDriverName=org.h2.Driver
datanucleus.ConnectionURL=jdbc:h2:datanucleus
datanucleus.ConnectionUserName=sa
datanucleus.ConnectionPassword=
Ich habe alle Abhängigkeiten von maven, mit dem Ziel, mit Abhängigkeiten zu implementieren. Abhängigkeiten sind wie auf datanucleus Seite http://www.datanucleus.org/products/datanucleus/jdo/maven.html
Irgendwelche Ideen?
was "ausführbare jar"? aus was? – DataNucleus
Ganzes Projekt mit Abhängigkeiten von Maven als ausführbare JAR-Datei bereitgestellt. – Paul
Sie meinen, Sie haben die DN-Gläser entarretiert und alles in ein einziges Glas gelegt? – DataNucleus