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

使用JDK 8编译Jose4j 0.9.3失败,寻求解决办法

在JDK 8环境下编译并运行Jose4j 0.9.3的解决方案

错误原因

编译时出现的cannot find symbol: class EdECPrivateKey/EdECPublicKey错误,核心原因是:这两个类是Java 11及以上版本才加入java.security.interfaces包的标准类,JDK 8的核心库中并不包含它们。而Jose4j 0.9.3版本默认集成了EdDSA算法支持,依赖这些JDK 11+的特性,导致JDK 8编译失败。

可行解决办法

  • 降级Jose4j版本(推荐)
    Jose4j 0.9.0及更早版本完全兼容JDK 8,0.9.1版本开始才引入了依赖JDK 11的EdDSA支持。直接将依赖切换为0.9.0版本,无需修改代码即可在JDK 8环境下正常编译运行。

  • 修改0.9.3版本代码移除EdDSA依赖
    如果必须使用0.9.3版本,可手动调整代码:

    1. 删除或注释掉src/main/java/org/jose4j/jws/EdDsaAlgorithm.java文件
    2. 在JwsAlgorithmFactory等注册算法的类中,移除EdDsaAlgorithm的注册逻辑
    3. 编译时确保项目不再引用任何EdEC相关的类和代码
  • 引入第三方EdDSA兼容库(不推荐)
    可以引入BouncyCastle等第三方库实现EdEC接口,然后修改Jose4j代码替换相关类的引用,但这种方式需要大量代码调整,维护成本高,仅适合有特殊需求的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:05:08