H2 데이터베이스가 내장 된 Datanucleus 및 JDO가있는 데스크톱 응용 프로그램을 개발 중입니다. 그것은 Eclipse에서 실행할 때 모두 잘 작동하지만 실행 가능한 jar을 만들려고 할 때 작동을 멈 춥니 다. 다음 오류가 발생합니다 :Datanucleus, JDO 및 실행 가능한 jar - 어떻게 할 수 있습니까?
org.datanucleus.exceptions.NucleusUserException : 지속성 프로세스가 DataNucleus 플러그인 메커니즘에서 아직 발견되지 않은 "jdo"라는 ClassLoaderResolver를 사용하도록 지정되었습니다. CLASSPATH 및 플러그인 사양을 확인하십시오.
물론 내가 제대로 구성하지 못했음을 보여줍니다. 무엇이 누락 되었습니까? 큰 것을 놓친다면, 전혀 작동하지 않을 것이므로, 결함있는 실행 가능한 jar라고 가정합니다. 내가 JPOX 같은 다른 애플 리케이션에서 그 오류를 보았다 어디 고정,하지만 주어진 어떤 해결책도없이.
전체 오류 스택 트레이스 :
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=
내가 모든 종속성에서이
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
가 가리키는 라인은 PersistenceManagerFilter 초기화 방법입니다 의존성을 가지고 배포하는 것을 목표로합니다. 의존성은 데이터 핵 페이지에 명시된 바와 같습니다 http://www.datanucleus.org/products/datanucleus/jdo/maven.html
아이디어가 있습니까?
"실행 가능한 jar"은 무엇입니까? 뭘 만들었 니? – DataNucleus
실행 가능한 jar 파일로 배포 된 maven 종속성이있는 전체 프로젝트입니다. – Paul
당신은 DN 단지를 unjarred하고 모든 것을 하나의 병에 넣어 두는 것을 의미합니까? – DataNucleus