Groovy 给出 EOF 错误,发现 '?' @ 第 9 行,第 25 列

Groovy gives error expecting EOF, found '?' @ line 9, column 25

我正在使用以下代码在 Groovy 中生成随机数。我可以 运行 例如Groovy Web 控制台 (https://groovyconsole.appspot.com/) 它可以工作,但是当我尝试在 Mule 中 运行 它时它失败了。这是我使用的代码:

log.info ">>run"
Random random = new Random()
def ranInt = random.nextInt()
def ran = Math.abs(​ranInt)​%20​0;
log.info ">>sleep counter:"+flowVars.counter+" ran: "+ran
sleep(ran)

这是抛出的异常:

Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script26.groovy: 9: expecting EOF, found '?' @ line 9, column 25. def ran = Math.abs(?400)?%20?0; ^

1 error

您在第 4 行中有一些额外的 unicode 字符。如果将其转换为十六进制,您将得到:

64 65 66 20 72 61 6e 20 3d 20 4d 61 74 68 2e 61 62 73 28 e2 80 8b 72 61 6e 49 6e 74 29 e2 80 8b 25 32 30 e2 80 8b 30 3b

现在,如果您将此十六进制转换回 ascii,您将得到:

def ran = Math.abs(​ranInt)​%20​0;

在第一个(之后、)之后和第一个0之后添加了一个字符​。如果删除它,您的代码将正确编译。

这是精选行的十六进制:

64 65 66 20 72 61 6e 20 3d 20 4d 61 74 68 2e 61 62 73 28 72 61 6e 49 6e 74 29 25 32 30 30 3b

以及该行本身:

def ran = Math.abs(ranInt)%200;