Datanucleus, JDO и исполняемый jar – как это сделать?JAVA

Программисты JAVA общаются здесь
Anonymous
Datanucleus, JDO и исполняемый jar – как это сделать?

Сообщение Anonymous »

Я разрабатываю настольное приложение с помощью Datanucleus и JDO для встроенной базы данных H2. Все работает нормально, когда я запускаю его из Eclipse, но перестает работать, когда я пытаюсь создать из него исполняемый jar-файл. Я получаю следующую ошибку:

org.datanucleus.Exceptions.NucleusUserException: процесс сохранения был указан для использования ClassLoaderResolver с именем «jdo», но механизм плагина DataNucleus не обнаружил его. Пожалуйста, проверьте свой CLASSPATH и спецификацию плагина.

Конечно, это показывает, что я что-то не настроил должным образом - что мне не хватает? Если бы я упустил что-то большое, это бы вообще не сработало, поэтому я предполагаю, что это некорректный исполняемый файл jar. Я видел эту ошибку в других приложениях, таких как JPOX, где она была исправлена, но без какого-либо решения.

Вся трассировка стека ошибок:

Код: Выделить всё

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.(NucleusContext.java:233)
at org.datanucleus.NucleusContext.(NucleusContext.java:196)
at org.datanucleus.NucleusContext.(NucleusContext.java:174)
at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.(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
Строка, на которую она указывает, — это метод инициализации PersistenceManagerFilter:

Код: Выделить всё

pmf = JDOHelper.getPersistenceManagerFactory(getProperties());
Файл свойств выглядит так:

Код: Выделить всё

    javax.jdo.PersistenceManagerFactoryClass=org.datanucleus.api.jdo.JDOPersistenceManagerFactory
datanucleus.ConnectionDriverName=org.h2.Driver
datanucleus.ConnectionURL=jdbc:h2:datanucleus
datanucleus.ConnectionUserName=sa
datanucleus.ConnectionPassword=
У меня есть все зависимости от maven, и я хочу развернуть их с зависимостями. Зависимости указаны на странице datanucleus http://www.datanucleus.org/products/dat ... maven.html

Есть идеи?

Вернуться в «JAVA»