通过使用eclipse RCP部署应用程序构建无法使用JAXB

时间:2016-03-08 11:29:46

标签: xml jaxb eclipse-rcp

目前我已经使用eclipse RCP构建了一个应用程序。 应用程序可以创建多个产品,将它们保存在XML文件中,文件将加载到应用程序中并显示在表中。 我使用JAXB来编组和解组XML文件。

当我想部署或导出应用程序时,会出现当前问题。 在日志文件中浏览应用程序后,我收到此错误:

rcp application with XML-file

  

[Command-Thread] 1:CMD_TABLE_CHANGE_PRODUCT_DATA - >命令线程已启动   CMD_TABLE_CHANGE_PRODUCT_DATA加载产品数据   从XML文件加载数据:C:/temp/myCompanyProductSuite/configuration/org.eclipse.osgi/2/0/.cp/appdata/products.xml   异常:javax.xml.bind.UnmarshalException:无法创建com.myCompany.app.model.objects.Product的实例     - 链接异常:   [java.lang.reflect.InvocationTargetException]   com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:740)   com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:262)   com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.createInstance(UnmarshallingContext.java:705)   com.sun.xml.bind.v2.runtime.unmarshaller.StructureLoader.startElement(StructureLoader.java:186)   com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:576)   com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:555)   com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:168)   com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(未知来源)   com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(未知来源)   com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next(未知来源)   com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(未知来源)   com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(未知来源)   com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(未知来源)   com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(未知来源)   com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(未知来源)   com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(未知来源)   com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(未知来源)   com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl $ JAXPSAXParser.parse(未知来源)   com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:258)   com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:229)   javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(未知来源)   javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(未知来源)   com.myCompany.server.ProductServer.loadProductsFromXMLFile(ProductServer.java:188)   com.myCompany.server.ProductServer.loadProductData(ProductServer.java:106)   com.myCompany.server.ProductServer.loadProductServerData(ProductServer.java:68)   com.myCompany.server.ProductServer.getApplicationProducts(ProductServer.java:83)   com.myCompany.app.gui.parts.model.ProductViewerModel.getApplicationProducts(ProductViewerModel.java:65)   com.myCompany.app.gui.parts.ProductViewerPart $ ProductViewerPartController.handleControlledCommand(ProductViewerPart.java:261)   com.myCompany.app.mvc.MVCController $ 1.run(MVCController.java:106)   从XML文件加载数据:unmarshalling结束

我在互联网上找不到帮助答案。

我只能向您保证,我已将JAXB的3个JAR文件(jaxb-api,jaxb-core,jaxb-impl)包含在插件清单中的部署中。

Bundle-ClassPath: .,
 properties/,
 appdata/,
 lib/log4j.jar,
 lib/jaxb-2.2.11/jaxb-api.jar,
 lib/jaxb-2.2.11/jaxb-impl.jar,
 lib/jaxb-2.2.11/jaxb-core.jar,
 lib/jaxb-2.2.11/jaxb-xjc.jar
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy

请您告诉我如何解决问题。

最诚挚的问候, 凯斯卡布

1 个答案:

答案 0 :(得分:0)

我也在我的一个应用程序(JMSToolBox)中使用JAXB,我没有做任何特定的应用程序(一个产品+多个插件)工作。
我没有像你那样为插件,产品或清单添加额外的库 JMSToolBox在JDK 7上使用eclipse v4.5.2运行,JAXB类(即javax.xml.bind。* classes)包含在JRE中,我将JRE与应用程序捆绑在一起,特别是Oracle / Sun JRE v1.7.0.80 您的应用程序是否在eclipse中运行良好,即从eclipse worbench启动时,或者只有在构建/导出应用程序时才会出现此问题?