2013-04-29 42 views
4

我正在使用Grails 2.2.2和GGTS 3.3M1。當我運行我的應用程序(grails run-app)並更改Groovy文件中的內容時,Grails會重新編譯該文件。在此過程中發生以下錯誤輸出:Grails 2.2.2編譯錯誤:ThreadGroupContext beaninfo

| Error Unexpected problem clearing ThreadGroupContext beaninfo: 
| Error java.lang.ClassCastException: java.beans.WeakIdentityMap cannot be cast to java.util.Map 
| Error at org.springsource.loaded.agent.JVMPlugin.reloadEvent(JVMPlugin.java:77) 
| Error at org.springsource.loaded.TypeRegistry.fireReloadEvent(TypeRegistry.java:1594) 
| Error at org.springsource.loaded.ReloadableType.loadNewVersion(ReloadableType.java:396) 
| Error at org.springsource.loaded.TypeRegistry.loadNewVersion(TypeRegistry.java:805) 
| Error at org.springsource.loaded.agent.ReloadableFileChangeListener.fileChanged(ReloadableFileChangeListener.java:51) 
| Error at org.springsource.loaded.agent.Watcher.determineChangesSince(FileSystemWatcher.java:218) 
| Error at org.springsource.loaded.agent.Watcher.run(FileSystemWatcher.java:205) 
| Error at java.lang.Thread.run(Thread.java:722) 
Reloading: JVMPlugin: warning: unable to clear BEANINFO_CACHE, cant find field 

編譯似乎工作正常,但錯誤仍然發生。

+0

這個錯誤似乎發生在JDK 1.7中。我建議你嘗試使用GGTS 3.2 +最新的JDK 1.6,它在這裏爲我工作。 – 2013-04-29 19:04:38

+0

我不能這樣做,因爲我的應用程序需要JAva 1.7。 – confile 2013-04-29 19:06:54

+0

可能與此相關:http://grails.1312388.n4.nabble.com/Reloading-JVMPlugin-warning-unable-to-clear-BEANINFO-CACHE-cant-find-field-td4644050.html以及此https:/ /jira.grails.org/browse/GRAILS-10027它說它是固定的,但我在JDK 1.7.0_55和Grails 2.2上,我仍然得到它。奇怪的是,我也遇到了上述錯誤。 – mastaBlasta 2014-05-07 18:55:10

回答

9

這是因爲您在JDK 1.7更新版本21. JDK中某些版本的「移動」,並且狀態清除邏輯需要在springloaded中更新。這已經在彈簧加載的代碼庫中得到修復,但稍後不會在新的grails版本中。較早版本的JDK 1.7會很好。您可以忽略該消息,但這意味着某種狀態在類型重新加載時未被清除 - 這意味着它可能看起來沒有重新加載可能對類型進行的某些更改。

+0

我更改爲jdk 1.7.0_17,現在一切正常。 – confile 2013-04-30 00:32:07