简单评估失败,缺少MissingMethodException

时间:2019-01-15 13:20:05

标签: groovy

在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中由于某些原因而不可用)
  • 并将生成的Java类App中的greeting方法更改为return (String) Eval.me("new Date() + 5");

0 个答案:

没有答案