在Java代码中,当它执行时:
Eval.me("new Date() + 5")
它会导致异常(请参见下文)。
为什么?常规魔术也应该在嵌入式常规中可用,对吗?
这样可以很好地评估:Eval.me("'Hello ' * 3")
有趣的是,IntelliJ的groovy控制台也有同样的问题,但是groovy的独立控制台工作正常。
Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: java.util.Date.plus() is applicable for argument types: (Integer) values: [5]
Possible solutions: parse(java.lang.String), use([Ljava.lang.Object;), split(groovy.lang.Closure), is(java.lang.Object), wait(), clone()
...
at Script1.run(Script1.groovy:1)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:441)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:479)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:450)
at groovy.util.Eval.me(Eval.java:68)
at groovy.util.Eval.me(Eval.java:51)
at App.getGreeting(App.java:8)
at App.main(App.java:12)
我只是
gradle init --type=java-application
创建了一个空的Java应用程序compile 'org.codehaus.groovy:groovy-all:2.5.5'
mavenCentral()
(因为groovy-all:2.5.5在jcenter中由于某些原因而不可用)greeting
方法更改为return (String) Eval.me("new Date() + 5");