com.ypy.hrp.db.service.impl.InvPageClassServiceImpl:41 异常 java.util.concurrent.C...

2026年08月11日 15:33 31.96 秒 success

错误信息

2026-08-11 15:22:04,679 ERROR com.ypy.hrp.db.service.impl.InvPageClassServiceImpl:41 异常 java.util.concurrent.CompletionException: javax.xml.bind.DataBindingException: javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath. - with linked exception: [java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory] at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320) at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1807) at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) Caused by: javax.xml.bind.DataBindingException: javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath. - with linked exception: [java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory] at javax.xml.bind.JAXB.unmarshal(JAXB.java:241) at com.ypy.hrp.db.service.impl.InvPageClassServiceImpl.lambda$initInvPageClass$0(InvPageClassServiceImpl.java:35) at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ... 6 common frames omitted Caused by: javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath. at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:278) at javax.xml.bind.ContextFinder.find(ContextFinder.java:421) at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721) at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662) at javax.xml.bind.JAXB$Cache.<init>(JAXB.java:127) at javax.xml.bind.JAXB.getContext(JAXB.java:154) at javax.xml.bind.JAXB.unmarshal(JAXB.java:238) ... 8 common frames omitted Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:122) at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:155) at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:276) ... 14 common frames omitted 2026-08-11 15:22:13,653 ERROR com.ypy.hrp.gl.service.basic.impl.AuxItemSetUpServiceImpl:36 异常 java.util.concurrent.CompletionException: javax.xml.bind.DataBindingException: javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath. - with linked exception: [java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory] at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320) at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1807) at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) Caused by: javax.xml.bind.DataBindingException: javax.xml.bind.JAXBException: Implementation of JAXB-API

AI 解决方案

🔍 报错分析

1. 🌐 错误翻译


原文:java.util.concurrent.CompletionException: javax.xml.bind.DataBindingException: javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
 - with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
译文:java.util.concurrent.CompletionException: javax.xml.bind.DataBindingException: javax.xml.bind.JAXBException: 在模块路径或类路径中未找到 JAXB-API 的实现。
 - 附带的异常:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]

2. 🎯 原因分析


  • 根本原因:Java 9+ 模块系统中,JAXB (Java Architecture for XML Binding) 相关模块被移出 JDK 标准发行版,导致运行时找不到 JAXB 实现类(com.sun.xml.internal.bind.v2.ContextFactory

  • 错误位置com.ypy.hrp.db.service.impl.InvPageClassServiceImplcom.ypy.hrp.gl.service.basic.impl.AuxItemSetUpServiceImpl 的 XML 反序列化过程中触发,具体在 JAXB.unmarshal 方法调用时

  • 上下文:应用运行在 Java 9+ 环境,使用 JAXB 进行 XML 数据绑定,但缺少 JAXB 实现依赖
  • 3. 💡 解决方案


    需要将 JAXB 依赖显式添加到项目构建配置中。以下是不同构建工具的修复方案:

    #### Maven 项目(pom.xml 添加依赖)

    <!-- 添加以下依赖 -->
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.3.3</version>
    </dependency>
    

    #### Gradle 项目(build.gradle 添加依赖)

    // 添加以下依赖
    implementation 'org.glassfish.jaxb:jaxb-runtime:2.3.3'
    

    #### 运行时添加 JDK 模块(临时方案,不推荐生产使用)
    如果使用 Java 11+,可在启动命令添加模块:

    java --add-modules java.xml.bind -jar your-app.jar
    

    4. 🛡️ 预防措施


  • ✅ 依赖管理最佳实践:使用 Java 9+ 时,所有标准扩展模块(如 JAXB、JAX-WS)必须显式添加依赖,不要依赖 JDK 内置实现,生产环境优先采用 Maven/Gradle 依赖方式而非运行时模块配置

  • 🔧 开发工具推荐

  • - 使用 Maven Enforcer 插件或 Gradle 的 dependency-check 插件,检查依赖完整性
    - 开发阶段启用模块路径检查(IDE 如 IntelliJ 可配置 --add-modules),提前暴露缺失模块问题
  • ⚠️ 版本兼容性:注意 JAXB 版本与 Java 版本兼容,Java 11+ 推荐使用 JAXB 3.x(如 jakarta.xml.bind:jakarta.xml.bind-api 配合实现依赖),避免版本冲突