Простое вычисление завершается с ошибкой MissingMethodException - PullRequest
0 голосов
/ 15 января 2019

В коде 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...