2012-03-12 32 views
0

This code增加的getBean()方法,我們使用的是類:MissingMethodException:法無簽名:getBean()方法重新編譯後

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

當應用程序啓動時它的工作原理沒有問題,它也存活數重新編譯。重新編譯完成like this

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

幾個重新編譯後,它說的g​​etBean()方法缺失和異常被拋出(所以一個個有重新啓動和重新部署正在開發的應用程序)。

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) //... 

任何想法可能是錯誤的?

回答

0

該問題僅出現在Vaadin 6的舊版插件中。Vaadin插件(用於Vaadin 7)for Grails已經完成了,並且這個問題在那裏並不存在。

更多信息可在相關JIRA issue找到。

有關新Vaadin的更多詳細信息可在http://vaadinongrails.com/