MissingMethodException: нет подписи метода: getBean () после перекомпиляции - PullRequest
0 голосов
/ 12 марта 2012

Этот код добавляет методы getBean () к используемым нами классам:

    clazz.metaClass.getBean = { String name ->
        return VaadinUtils.getBean(name)
    }
    clazz.metaClass.getBean = { Class type ->
        return VaadinUtils.getBean(type)
    }

Работает без проблем при запуске приложения, а также переживает несколько перекомпиляций. Перекомпиляция сделана вот так :

def reloadedClass = application.classLoader.loadClass(vaadinGrailsClass.clazz.name)

После нескольких перекомпиляций говорится, что метод getBean () отсутствует, и генерируется исключение (поэтому необходимо перезапустить и повторно развернуть разрабатываемое приложение).

Caused by MissingMethodException: No signature of method:
com.myapp.SaveIssueDetailListener.getBean() is applicable for argument types: 
(java.lang.Class) values: [class agiletool.core.IssueService]
Possible solutions: getClass(), getForm(), getAt(java.lang.String)

->> 30   buttonClick in com.myapp.SaveIssueDetailListener$$ENRHmYFM
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
512  receiveEvent in com.vaadin.event.ListenerMethod
164  fireEvent . . . . . in com.vaadin.event.EventRouter
1219     fireEvent in com.vaadin.ui.AbstractComponent
550  fireClick . . . . . in com.vaadin.ui.Button
217  changeVariables in ''
1451     changeVariables . . in com.vaadin.terminal.gwt.server.AbstractCommunicationManager
1399     handleVariableBurst in ''
1318     handleVariables . . in ''
763  doHandleUidlRequest in ''
296  handleUidlRequest . in com.vaadin.terminal.gwt.server.CommunicationManager
501  service in com.vaadin.terminal.gwt.server.AbstractApplicationServlet
191  service . . . . . . in com.vaadin.terminal.gwt.server.GrailsAwareApplicationServlet
886  runTask in java.util.concurrent.ThreadPoolExecutor$Worker
908  run . . . . . . . . in ''
680  run in java.lang.Thread

Вот как мы вызываем метод getBean ():

public void buttonClick(ClickEvent event) {
    UserService userService = getBean(UserService) //...

Есть идеи, что может быть не так?

1 Ответ

0 голосов
/ 02 февраля 2013

Проблема возникает только в старых версиях плагина для Vaadin 6. Плагин Vaadin (для Vaadin 7) для Grails был создан с нуля, и этой проблемы там не существует.

Более подробную информацию можно найти в связанной проблеме JIRA .

Более подробную информацию о новом Vaadin можно найти на http://vaadinongrails.com/

...