萝卜白菜。 2025-09-09 09:51 采纳率: 97.6%
浏览 25
已结题

TongWeb7报错: ClassNotFoundException: org.eclipse.persistence.internal.jaxb.many.MapEntry

TongWeb7.0部署应用报错: java.lang.ClassNotFoundException: org.eclipse.persistence.internal.jaxb.many.MapEntry,而应用lib下是存在org.eclipse.persistence.jar 的,但就是报找不到。


[2025-09-09 09:43:40 844] [SEVERE] [Thread-54] [core] [ContainerBase.addChild: start: ]
java.lang.NoClassDefFoundError: org/eclipse/persistence/internal/jaxb/many/MapEntry
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:635)
    at org.eclipse.persistence.internal.jaxb.JaxbClassLoader.generateClass(JaxbClassLoader.java:126)
    at org.eclipse.persistence.jaxb.compiler.MappingsGenerator.generateMapEntryClass(MappingsGenerator.java:2069)
    at org.eclipse.persistence.jaxb.compiler.MappingsGenerator.generateMapEntryClassAndDescriptor(MappingsGenerator.java:1954)
    at org.eclipse.persistence.jaxb.compiler.MappingsGenerator.generateCompositeCollectionMapping(MappingsGenerator.java:2212)
    at org.eclipse.persistence.jaxb.compiler.MappingsGenerator.generateMapping(MappingsGenerator.java:801)
    at org.eclipse.persistence.jaxb.compiler.MappingsGenerator.generateMappings(MappingsGenerator.java:2544)
    at org.eclipse.persistence.jaxb.compiler.MappingsGenerator.generateMappings(MappingsGenerator.java:2504)
    at org.eclipse.persistence.jaxb.compiler.MappingsGenerator.generateProject(MappingsGenerator.java:251)
    at org.eclipse.persistence.jaxb.compiler.Generator.generateProject(Generator.java:191)
    at org.eclipse.persistence.jaxb.JAXBContext$TypeMappingInfoInput.createContextState(JAXBContext.java:1168)
    at org.eclipse.persistence.jaxb.JAXBContext$TypeMappingInfoInput.createContextState(JAXBContext.java:1160)
    at org.eclipse.persistence.jaxb.JAXBContext.<init>(JAXBContext.java:198)
    at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:167)
    at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:154)
    at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:114)
    at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:104)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:247)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:234)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:441)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)
    at com.tongweb.tongejb.jee.JAXBContextFactory.newInstance(JAXBContextFactory.java:132)
    at com.tongweb.tongejb.jee.JaxbJavaee.getContext(JaxbJavaee.java:88)
    at com.tongweb.tongejb.jee.JaxbJavaee.unmarshal(JaxbJavaee.java:160)
    at com.tongweb.tongejb.config.ReadDescriptors.mergeWebFragments(ReadDescriptors.java:613)
    at com.tongweb.tongejb.config.ReadDescriptors.readWebApp(ReadDescriptors.java:586)
    at com.tongweb.tongejb.config.ReadDescriptors.deploy(ReadDescriptors.java:131)
    at com.tongweb.tongejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:358)
    at com.tongweb.tongejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:975)
    at com.tongweb.tw.thanos.ThanosWebtierWebAppBuilder.startInternal(ThanosWebtierWebAppBuilder.java:1110)
    at com.tongweb.tomee.catalina.WebtierWebAppBuilder.configureStart(WebtierWebAppBuilder.java:1059)
    at com.tongweb.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:133)
    at com.tongweb.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
    at com.tongweb.catalina.core.StandardContext.startInternal(StandardContext.java:5177)
    at com.tongweb.catalina.core.ThanosStandardContext.startInternal(ThanosStandardContext.java:204)
    at com.tongweb.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at com.tongweb.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:734)
    at com.tongweb.catalina.core.ContainerBase.addChild(ContainerBase.java:710)
    at com.tongweb.catalina.core.StandardHost.addChild(StandardHost.java:727)
    at com.tongweb.catalina.core.ThanosStandardHost.addChild(ThanosStandardHost.java:726)
    at com.tongweb.web.thanos.startup.ThanosHostConfig.deployWar(ThanosHostConfig.java:231)
    at com.tongweb.tw.thanos.ThanosWebtierWebAppBuilder.fireWebtierProcess(ThanosWebtierWebAppBuilder.java:449)
    at com.tongweb.tw.thanos.ThanosWebtierWebAppBuilder.deployApplication(ThanosWebtierWebAppBuilder.java:359)
    at com.tongweb.deploy.TongWebDeployer.deploy0(TongWebDeployer.java:398)
    at com.tongweb.deploy.TongWebDeployer$1.run(TongWebDeployer.java:335)
    at java.lang.Thread.run(Thread.java:750)
Caused by: java.lang.ClassNotFoundException: org.eclipse.persistence.internal.jaxb.many.MapEntry
    at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at com.tongweb.server.TWServerURLClassLoader.loadClass0(TWServerURLClassLoader.java:46)
    at com.tongweb.server.TWServerURLClassLoader.access$000(TWServerURLClassLoader.java:11)
    at com.tongweb.server.TWServerURLClassLoader$1.loadClass(TWServerURLClassLoader.java:40)
    at com.tongweb.common.LoadClassCache.cacheLoadClass(LoadClassCache.java:63)
    at com.tongweb.server.TWServerURLClassLoader.loadClass(TWServerURLClassLoader.java:37)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at org.eclipse.persistence.internal.jaxb.JaxbClassLoader.loadClass(JaxbClassLoader.java:109)
    ... 53 more
  • 写回答

4条回答 默认 最新

  • 萝卜白菜。 2025-09-09 10:09
    关注

    原因是docx4j-JAXB-MOXy-8.3.14.jar中META-INF/service/下定义了JAXBContextFactory工厂实现是org.eclipse包里, org.eclipse.persistence.jaxb.JAXBContextFactory,而JAXB要转换的对象类是com.tongweb.tongejb.jee.WebFragment是由tongweb/lib下的类加载器加载的,去解析应用jar中的web-fragment.xml文件,放在应用目录下无法加载导致错误。有两种解决办法:

    一种解决办法是将org.eclipse所有包放入tongweb/lib下再部署应用.
    一种解决办法是启动参数配置-Djavax.xml.bind.context.factory=com.sun.xml.internal.bind.v2.ContextFactory, 全部使用JDK实现.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月17日
  • 已采纳回答 9月9日
  • 创建了问题 9月9日