簡體   English   中英

Grails 2.1.0不自動重新加載/自動重新編譯

[英]Grails 2.1.0 Not Auto-Reloading / Auto-Recompiling

似乎Grails會自動重新編譯我的GSP頁面,但不會重新編譯我的控制器。 它曾用於以前版本的Grails。 知道我能找到什么嗎?

在OSX Snow Leopard上使用Grails 2.1.0。

注意:這與此問題類似

免責聲明:自動重裝在我的Mac上一直對我有用。

我發現了一些可能有用的東西。

首先,運行自定義環境(不是dev)似乎會禁用自動重新加載( 請參閱此stackoverflow帖子 ),因此如果您以這種方式運行應用程序,則需要按照該帖子中的說明進行操作。

其次,如果您將應用程序作為戰爭運行,請確保自動重新加載已關閉。 參見Grails Auto-Reload頁面

第三,我發現使用Grails IDE(例如IntelliJ或SpringSource)確實為Grails開發環境增加了很多穩定性。 例如,IntelliJ不使用二進制下載附帶的Grails shell文件。 它手動調用Grails jar和bootstraps。

我的問題是:

您的其他環境是什么樣的? 你是如何運行你的應用程序(運行應用程序或其他容器)?

您安裝了哪些Grails插件(Grails文檔說tomcat插件配置為最佳自動重新加載)?

您是否在計算機上下載了任何其他Grails二進制文件(在嘗試加載時可能會引起混淆)?

最后,您是否能夠在干凈的環境中重現此問題(意味着新的Grails二進制文件,新的Grails create-app)?

我還建議閱讀Grails文檔的部署部分( 在此處找到 )。 它有一些關於重新加載的相關信息。

我為這個長篇大論且可能沒有回答的答案道歉,但我希望這引發了一兩個想法。 讓我知道事情的結果!

如果您錯誤地命名控制器上的軟件包名稱(因為文件夾結構與軟件包聲明不一致),應用程序仍將運行,並且不會報告任何錯誤,但自動重新加載將不起作用。

當我有一個BaseController類,從中派生出其他控制器時,我遇到了這個問題。 如果我對BaseController類進行更改,例如添加方法或閉包,更改方法名稱,導入某些類等,Grails中的整個類重新加載功能將停止。

對我有用的唯一解決方案是刪除編譯所有類的目標目錄 至少這樣我每次都不必重新啟動服務器,這使我不必等待大約30秒才能顯示起始頁面。 當類重新加載功能無法按預期工作時,這可能會非常煩人。

Grails自動重新加載功能並非沒有怪癖。 其中一些怪癖最終與java有關,以及類加載如何在servlet容器環境中運行。 我希望Grails團隊能夠優先為Grails提供無縫的類重新加載,就像其他腳本環境(ruby,PHP,python或play框架)一樣,因為這個框架的其他一些方面非常樂於處理。

奇怪,我從來沒有遇到過這個問題。 你確定你的控制器編譯正確,沒有拼寫錯誤嗎? 我發現通常只需要一兩秒就可以看到控制器中反映的變化。 域對象更改需要重新啟動(它們通常會擦除您保存的數據)並且我發現有時候對Spring管理資源(如注入服務)的更改不會占用。 但控制器和GSP頁面97%的時間重新編譯:)

我在GGTS(eclipse)和命令行run-app之間走,它幾乎總是適合我。 您是否正在進行任何類型的緩存? 我在Lion上運行JDK 1.6,grails 2.1.1

通常,您會看到輸出告訴您文件已在一兩秒內重新編譯保存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM