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

Gradle 8中使用Saxon Jar解决SecurityException问题求助

Saxon依赖冲突导致SecurityException问题解决

异常信息

java.lang.SecurityException: class "net.sf.saxon.value.UntypedAtomicValue"'s signer information does not match signer information of other classes in the same package

该类net.sf.saxon.value.UntypedAtomicValue属于Saxon-HE。通过分析项目传递依赖发现:

  • checkstyle依赖net.sf.saxon:Saxon-HE:12.2
  • PMD相关依赖net.sourceforge.saxon:saxon:9.1.0.8
    移除checkstyle后异常消失,确认是二者的Saxon依赖冲突导致。

1. 错误原因

  • 同一个Java包net.sf.saxon.value下的类来自两个不同版本、不同签名的JAR包:新版Saxon-HE 12.2(由checkstyle引入)和旧版saxon 9.1.0.8(由PMD引入)。
  • JVM加载类时会校验同包类的签名一致性,确保它们来自同一可信来源。当同包类签名不匹配时,JVM会抛出SecurityException,防止不可信或被篡改的类混入运行环境。

2. Gradle 8(Groovy DSL)修复方案

方案一:排除冲突依赖并统一版本

在PMD的依赖配置中排除旧版saxon,同时保留checkstyle引入的新版Saxon-HE:

dependencies {
    // 其他依赖保持不变...
    implementation('net.sourceforge.pmd:pmd:6.54.0') {
        exclude group: 'net.sourceforge.saxon', module: 'saxon'
    }
    implementation('net.sourceforge.pmd:pmd-java:6.54.0') {
        exclude group: 'net.sourceforge.saxon', module: 'saxon'
    }
    implementation('net.sourceforge.pmd:pmd-core:6.54.0') {
        exclude group: 'net.sourceforge.saxon', module: 'saxon'
    }
}

也可以通过全局依赖策略强制统一版本:

configurations.all {
    resolutionStrategy {
        force 'net.sf.saxon:Saxon-HE:12.2'
        exclude group: 'net.sourceforge.saxon', module: 'saxon'
    }
}

方案二:调整依赖范围(仅适用于非运行时场景)

如果checkstyle和PMD仅用于代码检查,不需要在程序运行时调用其API,可以将依赖范围改为compileOnly,避免运行时加载冲突JAR:

dependencies {
    // 其他依赖保持不变...
    compileOnly 'com.puppycrawl.tools:checkstyle:10.12.1'
    compileOnly 'net.sourceforge.pmd:pmd:6.54.0'
    compileOnly 'net.sourceforge.pmd:pmd-java:6.54.0'
    compileOnly 'net.sourceforge.pmd:pmd-core:6.54.0'
}

方案三:升级PMD版本

PMD新版本(如7.x)已改用net.sf.saxon:Saxon-HE替代旧版依赖,升级PMD到兼容版本可消除冲突:

dependencies {
    // 其他依赖保持不变...
    implementation 'net.sourceforge.pmd:pmd:7.0.0'
    implementation 'net.sourceforge.pmd:pmd-java:7.0.0'
}

升级前需确认新版本与项目代码的兼容性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:22:44