Fortify扫描出现Unresolved variable: List报错,关联Java 11 List.of()用法
Fortify扫描Java 11项目
List.of()报Unresolved variable: List的解决方案 报错原因
该报错是Fortify扫描器默认使用的语法解析版本低于Java 9导致的:List.of()是Java 9正式引入的集合工厂方法,低版本的扫描规则无法识别Java 9+的新增类库API,就会将List识别为未定义变量。
修复步骤
- 明确指定扫描适配的Java版本
运行fortifyExecuteScan时添加版本指定参数:
命令行直接执行扫描的场景,追加参数-Dcom.fortify.sca.JavaVersion=11
使用Maven插件执行扫描的场景,在pom.xml的Fortify插件配置中添加:
使用Gradle插件执行扫描的场景,在<configuration> <javaVersion>11</javaVersion> </configuration>build.gradle的Fortify插件配置中添加:fortify { javaVersion = 11 } - 明确指定扫描使用的JDK路径
避免扫描器调用内置的低版本JDK类库解析,执行扫描时追加参数-Dcom.fortify.sca.JDKHome=你的Java 11 JDK绝对路径 - 清理旧扫描缓存后重跑
执行命令sourceanalyzer -b 你的扫描构建ID -clean清除之前的低版本解析缓存,再重新运行完整扫描流程。
校验项
操作完成后如果仍有报错,检查对应代码文件是否正确导入java.util.List,不存在导包拼写错误或缺失的问题。
内容的提问来源于stack exchange,提问作者Sugata Kar
相关产品推荐
相关产品推荐

