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

Java 1.8环境下jdk.nashorn依赖无法解析,如何引入该库?

解决Java 8环境下Nashorn内部类引入问题

核心说明

Java 1.8中Nashorn是JDK内置模块,不需要通过Maven单独引入依赖,你遇到的问题大概率是项目配置或编译参数的问题,以下是具体解决步骤:


1. 确认项目JDK配置正确性

  • 打开Eclipse,右键项目 → 属性 → Java Build Path → Libraries:
    • 检查是否已添加JDK 1.8.0_231(而非仅JRE),若没有则点击Add Library → JRE System Library选择对应JDK版本。
  • 切换到Java Compiler标签页:
    • 确保Compiler compliance level设置为1.8,且勾选Use compliance from execution environment on the 'Java Build Path'。

2. 清理Maven中无效的Nashorn依赖

如果你的pom.xml中手动添加了jdk.nashorn相关依赖,直接删除即可——因为该模块属于JDK内置,Maven中央仓库不存在公开的可下载依赖包。

若是依赖传递引入的jdk.nashorn,则在对应的依赖节点中添加排除规则:

<dependency>
    <!-- 这里是传递引入Nashorn的依赖 -->
    <groupId>xxx</groupId>
    <artifactId>xxx</artifactId>
    <version>xxx</version>
    <exclusions>
        <exclusion>
            <groupId>jdk.nashorn</groupId>
            <artifactId>jdk.nashorn</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3. 配置编译参数允许访问内部包

jdk.nashorn.internal.ir.debug属于JDK内部包,Java 8默认限制外部代码访问,需添加编译参数解除限制:

Eclipse中配置

  • 右键项目 → 属性 → Java Compiler → Compiler Options → Additional command line parameters:
    • 添加参数:--add-exports jdk.nashorn/jdk.nashorn.internal.ir.debug=ALL-UNNAMED

Maven编译配置

在pom.xml的maven-compiler-plugin中添加编译参数:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <compilerArgs>
            <arg>--add-exports</arg>
            <arg>jdk.nashorn/jdk.nashorn.internal.ir.debug=ALL-UNNAMED</arg>
        </compilerArgs>
    </configuration>
</plugin>

4. 生产环境替代方案(推荐)

ObjectSizeCalculator是JDK内部类,官方未承诺API兼容性,生产环境建议替换为公开稳定的工具:

  • 使用Apache Commons Lang的SerializationUtils计算对象大小:
    import org.apache.commons.lang3.SerializationUtils;
    
    long size = SerializationUtils.serialize(modRespList).length;
    
  • 或使用Guava的SizeEstimator:
    import com.google.common.util.concurrent.SizeEstimator;
    
    long size = SizeEstimator.estimate(modRespList);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:05:20