組み込みH2データベース用にDatanucleusとJDOを使用してデスクトップアプリを開発しています。Eclipseから実行するとすべて正常に動作しますが、実行可能jarを作成しようとすると動作を停止します。次のエラーが発生します:
org.datanucleus.exceptions.NucleusUserException:「jdo」という名前のClassLoaderResolverを使用するように永続プロセスが指定されましたが、これは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.<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
それが指す行は、PersistenceManagerFilterinitメソッドです。
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/datanucleus/jdo/maven.htmlに記載されているとおりです。
何か案は?