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

Unable to use JAXB by deployment of an application build with eclipse RCP

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

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

rcp application with XML-file

[Command-Thread]1:CMD_TABLE_CHANGE_PRODUCT_DATA -> command thread started CMD_TABLE_CHANGE_PRODUCT_DATA loading products data Loading data from XML file: C:/temp/myCompanyProductSuite/configuration/org.eclipse.osgi/2/0/.cp/appdata/products.xml Exception: javax.xml.bind.UnmarshalException: Unable to create an instance of com.myCompany.app.model.objects.Product - with linked exception: [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(Unknown Source) com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source) com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) 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(Unknown Source) javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source) 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.run(MVCController.java:106) Loading data from XML file: unmarshalling ended

我在互联网上没有真正找到有用的答案。

我只能向您保证,我已将用于部署的 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

你能告诉我如何解决这个问题吗?

此致, 凯斯

我也在我的一个应用程序 (JMSToolBox) 中使用 JAXB,但我没有为应用程序(一个产品 + 多个插件)做任何特定的工作。
我没有像您那样向插件或产品或清单添加额外的库。
JMSToolBox 在 JDK 7 上运行,eclipse v4.5.2 和 JAXB 类(即 javax.xml.bind.* 类)包含在我捆绑的 JRE(JRE)中应用程序,特别是 Oracle/Sun JRE v1.7.0.80 您的应用程序在 eclipse 中是否运行良好,即从 eclipse worbench 启动时,还是仅当您 build/export 应用程序时才会遇到此问题?