我使用以下代码在Groovy中生成随机数。我可以在例如Groovy Web控制台(https://groovyconsole.appspot.com/)并且它可以工作,但是当我尝试在Mule中运行它时失败了。这是我使用的代码:
log.info ">>run"
Random random = new Random()
def ranInt = random.nextInt()
def ran = Math.abs(ranInt)%200;
log.info ">>sleep counter:"+flowVars.counter+" ran: "+ran
sleep(ran)
这是一个被抛出的异常:
引起: org.codehaus.groovy.control.MultipleCompilationErrorsException: 启动失败:Script26.groovy:9:期待EOF,发现'?' @第9行, 第25栏.def ran = Math.abs(?400)?%20?0; ^
1错误
答案 0 :(得分:4)
第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;