我在尝试将我的Web应用程序部署到GlassFish 3.1.2时遇到了问题。看起来有JAXB库冲突:我的应用程序使用v.1 JAXB实现,而AFAIK,GlassFish 3.1.2包含自己的v2 JAXB实现。这种重叠是否会导致部署期间失败?如何在这种情况下采取行动?
异常消息:
引起:rpt.engine.util.EngineException:javax.xml.bind.JAXBException:无法实例化提供程序com.sun.xml.bind.ContextFactory_1_0_1:javax.xml.bind.JAXBException - 链接异常: [java.lang.NoSuchFieldError:theInstance]
- 链接异常: [javax.xml.bind.JAXBException - 链接异常: [java.lang.NoSuchFieldError:theInstance]] 在javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:160) 在javax.xml.bind.ContextFinder.find(ContextFinder.java:308) 在javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:446) 在javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:409) 在javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:313)
答案 0 :(得分:1)
这看起来与Glassfish 3.1.2捆绑的JAXB版本有问题,即2.2.5。
您可以尝试手动升级捆绑的JAXB版本:
在http://jaxb.java.net/下载新版本(完整套餐)
备份文件 /GLASSFISH_HOME/glassfish/lib/jaxb-osgi.jar 和 /GLASSFISH_HOME/glassfish/lib/endorsed/jaxb-api-osgi.jar
从 new-version.zip/lib jaxb-osgi.jar 和 jaxb-api-osgi.jar >到 / GLASSFISH_HOME / glassfish / lib / 和 / GLASSFISH_HOME / glassfish / lib / endorsed /