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

Groovy脚本用Picocli遇注解错误:@Option不可用于局部变量

解决Picocli在Groovy脚本中交互式密码提示的注解错误

@picocli.CommandLine$Option不允许用于LOCAL_VARIABLE元素这个错误的原因很直接:Groovy脚本中未添加@Field注解的变量会被默认视为局部变量,而Picocli的@Option注解仅能作用于类字段,无法识别局部变量。

只需要给密码变量补充@Field注解,将其声明为脚本类的字段,就能让Picocli正确识别这个选项配置。修正后的完整代码如下:

import static picocli.CommandLine.*
import groovy.transform.Field
import java.security.MessageDigest

@Command(name = 'checksum', mixinStandardHelpOptions = true, version = 'checksum 4.0',
        description = 'Prints the checksum (SHA-256 by default) of a file to STDOUT.')
@picocli.groovy.PicocliScript

@Parameters(index = '0', description = 'The file whose checksum to calculate.')
@Field File file

@Option(names = ['-a', '--algorithm'], description = 'MD5, SHA-1, SHA-256, ...')
@Field String algorithm = 'SHA-256'

@Option(names = [ '-p','--password'], description = "Passphrase", interactive = true)
@Field char[] password;

println MessageDigest.getInstance(algorithm).digest(file.bytes).encodeHex().toString()

执行你原本的命令即可正常触发交互式密码提示:

groovy PicocliTest.groovy findClassPath.groovy -p

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:35:22