Groovy给出了预期的EOF错误,找到了“?” @第9行,第25列

Bud*_*dhi 2 groovy mule anypoint-studio

我正在使用以下代码在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)
Run Code Online (Sandbox Code Playgroud)

这是引发的异常:

由以下原因引起:org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:Script26.groovy:9:期望EOF,找到“?” @第9行,第25列。def ran = Math.abs(?400)?%20?0; ^

1个错误

Szy*_*iak 5

您在第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
Run Code Online (Sandbox Code Playgroud)

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

def ran = Math.abs(​ranInt)​%20​0;
Run Code Online (Sandbox Code Playgroud)

​在第一个(之后),第一个之后和第一个之后添加一个字符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
Run Code Online (Sandbox Code Playgroud)

和该行本身:

def ran = Math.abs(ranInt)%200;
Run Code Online (Sandbox Code Playgroud)