2012-06-10 33 views
0

我在RCP应用程序下面的代码:Eclipse RCP的抛出异常,当我尝试使用JPA本地数据存储

EntityManagerFactory emf = Persistence.createEntityManagerFactory("todos"); 
EntityManager em = emf.createEntityManager(); 
Query q = em.createQuery("select t from Todo t"); 
@SuppressWarnings("unchecked") 
List<Todo> todos = (List<Todo>)q.getResultList(); 

我的配置是META-INF/persistence.xml中,包含:

<?xml version="1.0" encoding="UTF-8" ?> 
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"> 
    <persistence-unit name="todos" transaction-type="RESOURCE_LOCAL"> 
     <class>foo.bar.Todo</class> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" 
       value="org.apache.derby.jdbc.EmbeddedDriver" /> 
      <property name="javax.persistence.jdbc.url" 
       value="jdbc:derby:/home/pocon64/myDb;create=true" /> 
      <property name="javax.persistence.jdbc.user" value="test" /> 
      <property name="javax.persistence.jdbc.password" value="test" /> 

      <!-- EclipseLink should create the database schema automatically -->   
      <property name="eclipselink.ddl-generation" value="create-tables" /> 
      <property name="eclipselink.ddl-generation.output-mode" 
       value="database" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

当我尝试运行应用程序,它启动罚款,但显示错误:

Could not create the view: 
Exception Description: An exception was thrown while searching for persistence archives with ClassLoader: [email protected] 
Internal Exception: Exception [EclipseLink-30009] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.PersistenceUnitLoadingException 
Exception Description: An exception was thrown while trying to load persistence unit at url: bundleresource://51.fwk2013125681:10 
Internal Exception: Exception [EclipseLink-30004] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.PersistenceUnitLoadingException 
Exception Description: An exception was thrown while processing persistence.xml from URL: bundleresource://51.fwk2013125681:10 
Internal Exception: 
(1. URI was not reported to parser for entity [document]) 

的数据库文件我根本没有创造。任何想法是什么造成这种情况?

此外:全堆栈跟踪如下:

Local Exception Stack: 
Exception [EclipseLink-30009] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.PersistenceUnitLoadingException 
Exception Description: An exception was thrown while trying to load persistence unit at url: bundleresource://51.fwk998462082:10 
Internal Exception: Exception [EclipseLink-30004] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.PersistenceUnitLoadingException 
Exception Description: An exception was thrown while processing persistence.xml from URL: bundleresource://51.fwk998462082:10 
Internal Exception: 
(1. URI was not reported to parser for entity [document]) 
at org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionLoadingFromUrl(PersistenceUnitLoadingException.java:100) 
at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceArchive(PersistenceUnitProcessor.java:538) 
at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.getPersistenceUnits(PersistenceUnitProcessor.java:444) 
at org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.findPersistenceUnitInfoInArchive(JPAInitializer.java:172) 
at org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.findPersistenceUnitInfoInArchives(JPAInitializer.java:154) 
at org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.findPersistenceUnitInfo(JPAInitializer.java:135) 
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:73) 
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83) 
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60) 
at com.diligentgaming.dcm.workstation.plugins.core.dashboard.DashboardView.createPartControl(DashboardView.java:64) 
at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:375) 
at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:229) 
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) 
at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:313) 
at org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:534) 
at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:180) 
at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270) 
at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65) 
at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473) 
at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1245) 
at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1198) 
at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1597) 
at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:643) 
at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:570) 
at org.eclipse.ui.internal.PartSashContainer.createControl(PartSashContainer.java:568) 
at org.eclipse.ui.internal.PerspectiveHelper.activate(PerspectiveHelper.java:272) 
at org.eclipse.ui.internal.Perspective.onActivate(Perspective.java:981) 
at org.eclipse.ui.internal.WorkbenchPage.onActivate(WorkbenchPage.java:2714) 
at org.eclipse.ui.internal.WorkbenchWindow$28.run(WorkbenchWindow.java:3030) 
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) 
at org.eclipse.ui.internal.WorkbenchWindow.setActivePage(WorkbenchWindow.java:3011) 
at org.eclipse.ui.internal.WorkbenchWindow.busyOpenPage(WorkbenchWindow.java:799) 
at org.eclipse.ui.internal.Workbench$23.runWithException(Workbench.java:1229) 
at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) 
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) 
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135) 
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3938) 
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3615) 
at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803) 
at org.eclipse.ui.internal.Workbench$33.runWithException(Workbench.java:1600) 
at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) 
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) 
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135) 
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3938) 
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3615) 
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2609) 
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499) 
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679) 
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) 
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668) 
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 
at com.diligentgaming.dcm.workstation.plugins.core.Application.start(Application.java:20) 
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) 
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) 
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) 
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 
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 org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) 
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) 
at org.eclipse.equinox.launcher.Main.run(Main.java:1410) 
at org.eclipse.equinox.launcher.Main.main(Main.java:1386) 
Caused by: Exception [EclipseLink-30004] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.PersistenceUnitLoadingException 
Exception Description: An exception was thrown while processing persistence.xml from URL: bundleresource://51.fwk998462082:10 
Internal Exception: 
(1. URI was not reported to parser for entity [document]) 
at org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionProcessingPersistenceXML(PersistenceUnitLoadingException.java:118) 
at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceXML(PersistenceUnitProcessor.java:587) 
at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceArchive(PersistenceUnitProcessor.java:536) 
... 63 more 
Caused by: 
(1. URI was not reported to parser for entity [document]) 
at org.eclipse.persistence.internal.jpa.deployment.xml.parser.XMLExceptionHandler.error(XMLExceptionHandler.java:28) 
at org.eclipse.persistence.internal.jpa.deployment.xml.parser.XMLExceptionHandler.warning(XMLExceptionHandler.java:23) 
at gnu.xml.aelfred2.SAXDriver.warn(SAXDriver.java:935) 
at gnu.xml.aelfred2.SAXDriver.startExternalEntity(SAXDriver.java:631) 
at gnu.xml.aelfred2.XmlParser.pushURL(XmlParser.java:3358) 
at gnu.xml.aelfred2.XmlParser.doParse(XmlParser.java:159) 
at gnu.xml.aelfred2.SAXDriver.parse(SAXDriver.java:320) 
at gnu.xml.aelfred2.XmlReader.parse(XmlReader.java:294) 
at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceXML(PersistenceUnitProcessor.java:577) 
... 64 more</code> 
+0

你可以包含完整的堆栈跟踪吗,你是否在非OSGi环境中尝试过相同的持久化单元? – James

+0

嗨,詹姆斯,我没有在非OSGi环境中尝试,这是完整的堆栈跟踪。它看起来像我的persistence.xml在某种程度上是错误的,但我不知道如何,它对我来说看起来不错。 – theZenPebble

回答

0

答案竟然是,除去从classpath中gnujaxp.jar,一切似乎工作之后的罚款。

相关问题