目前我已经使用eclipse RCP构建了一个应用程序。 应用程序可以创建多个产品,将它们保存在XML文件中,文件将加载到应用程序中并显示在表中。 我使用JAXB来编组和解组XML文件。
当我想部署或导出应用程序时,会出现当前问题。 在日志文件中浏览应用程序后,我收到此错误:
[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
请您告诉我如何解决问题。
最诚挚的问候, 凯斯卡布
答案 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启动时,或者只有在构建/导出应用程序时才会出现此问题?