В коде Java, когда это выполняется:
Eval.me("new Date() + 5")
это приводит к исключению (см. Ниже).
Зачем? Волшебство Groovy должно быть доступно и во встроенном Groovy, верно?
Это оценивает хорошо, например: Eval.me("'Hello ' * 3")
Интересно, что в Groovy консоли IntelliJ есть та же проблема, но автономная консоль 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)
Я просто
- создал пустое Java-приложение с
gradle init --type=java-application
- добавлена зависимость
compile 'org.codehaus.groovy:groovy-all:2.5.5'
- добавлен репозиторий
mavenCentral()
(потому что groovy-all: 2.5.5 недоступен в jcenter для некоторого резонанса)
- И измените метод
greeting
в сгенерированном классе Java App на return (String) Eval.me("new Date() + 5");