You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

因许可证限制,如何在Optaplanner 8.34.0中规避jaxb-core依赖?

OptaPlanner 8.34.0移除JAXB Core的可行性与替代方案

先确认是否依赖JAXB Core

  • 用项目构建工具的依赖树命令排查:Maven执行mvn dependency:tree,Gradle执行gradle dependencies,搜索jaxb-core,就能看到它是被哪个依赖引入的。OptaPlanner 8.x里,JAXB主要服务于XML相关功能——比如XML格式的Solver配置、问题/解决方案的XML序列化。

移除JAXB Core的影响判断

  • 如果你的项目没用到XML格式的Solver配置(比如用YAML、Properties或者Java API直接配置),也不需要把问题/解决方案序列化成XML,那移除jaxb-core完全不会影响核心优化功能。
  • 如果用到了XML相关功能,直接移除会触发ClassNotFound异常,或者XML解析、序列化失败。

规避许可证问题的替代方案

方案一:替换XML相关功能为其他格式

  • 把Solver配置从XML换成YAML或Properties格式,OptaPlanner对这两种格式的支持和XML完全一致,迁移成本极低。
  • 问题/解决方案的序列化改用JSON(比如用Jackson库)或者其他不依赖JAXB的方式。

方案二:用兼容许可证的JAXB替代实现

  • 可以用EclipseLink MOXy作为JAXB的替代,它的许可证(EPL 2.0)适配大多数商业场景。只需要在依赖中排除原jaxb-core,引入MOXy即可。
  • Maven配置示例:
    <dependency>
        <groupId>org.optaplanner</groupId>
        <artifactId>optaplanner-core</artifactId>
        <version>8.34.0</version>
        <exclusions>
            <exclusion>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.moxy</artifactId>
        <version>2.7.12</version> <!-- 选和你的JDK版本兼容的版本 -->
    </dependency>
    

方案三:构建无JAXB的OptaPlanner核心包

  • 8.34.0版本的官方默认构件包含JAXB依赖,但你可以自己编译OptaPlanner时排除XML相关模块,生成不带JAXB的核心包。

内容的提问来源于stack exchange,提问作者Tejdeep Reddy Hunabad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:52:39