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

Java模块无法访问jackson.databind的ObjectMapper问题求助

解决Java模块中Jackson Databind的模块访问问题

问题核心

Jackson Databind 2.18.0的JAR包属于非模块化JAR(没有module-info.java),Java模块系统无法直接识别其模块名,导致requires声明失效,进而引发访问错误或模块找不到的异常。

解决方案

1. 正确使用自动模块名声明依赖

非模块化JAR会被模块系统视为自动模块,Jackson Databind的官方自动模块名是com.fasterxml.jackson.databind,按以下配置:

  • 在module-info.java中添加:
    module com.example.mymodule {
        requires com.fasterxml.jackson.databind;
        // 若需Jackson反射序列化/反序列化你的类,添加opens声明
        // opens com.example.mymodule to com.fasterxml.jackson.databind;
    }
    
  • 确认Maven依赖配置正确:
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.18.0</version>
    </dependency>
    

2. 确保Maven编译时正确处理模块路径

如果仍报Module jackson.databind not found,需配置Maven编译插件,明确启用模块路径支持:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.12.1</version>
            <configuration>
                <source>17</source> <!-- 替换为你使用的Java版本 -->
                <target>17</target>
                <modulepath>true</modulepath>
            </configuration>
        </plugin>
    </plugins>
</build>

3. 运行时手动授权(备选)

若自动模块方式仍有问题,可通过VM参数手动添加模块依赖和访问权限:

  • 运行时添加参数:
    --add-modules com.fasterxml.jackson.databind --add-reads com.example.mymodule=com.fasterxml.jackson.databind
    

注意事项

  • 不要使用requires jackson.databind;,这不是Jackson的合法自动模块名,会直接导致模块找不到错误。
  • 自动模块名的推导规则通常是JAR文件名去版本号、替换-为.,但Jackson官方明确使用包名作为自动模块名,需优先遵循。

内容的提问来源于stack exchange,提问作者Jardo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 20:22:40