2014-12-25 70 views
8

很抱歉,如果這個問題變得愚蠢,但我根本找不到我的錯誤,並且我已經在SO和其他網站上檢查了很多帖子。 我已經使用Java設置了Play 2.3.7項目。我在應用程序目錄下的公共包中創建了一個Global.java文件。在那個文件中,我重寫onStart(和其他鉤子),但我沒有讓他們工作。他們根本就沒有執行。這裏的Global.java文件:Global onStart on Play Framework 2.3.7不工作?

package common; 

import play.Application; 
import play.GlobalSettings; 
import play.Logger; 

public class Global extends GlobalSettings { 

    @Override 
    public void beforeStart(Application application) { 
     Logger.error("good bye cruel world"); 
     super.beforeStart(application); 
     throw new RuntimeException("WTF"); 
    } 

    @Override 
    public void onStart(Application application) { 
     Logger.error("good bye cruel world"); 
     super.onStart(application); 
     throw new RuntimeException("WTF"); 
    } 

    @Override 
    public void onStop(Application application) { 
     Logger.error("good bye cruel world"); 
     super.onStop(application); 
     throw new RuntimeException("WTF"); 
    } 
} 

而且application.conf內,這裏的相關部分,這是默認說:

# Define the common.Global object class for this application. 
# Default to common.Global in the root package. 
# application.global=common.Global 

可以採取什麼問題嗎?謝謝。

回答

6

Global對象必須駐留在默認包中,因此您需要刪除package common

正如documentation的第一段所述。

+0

好,它的工作原理,如果我將它移動到默認的包,確實如此。謝謝。現在,生成的註釋在默認情況下提到常用軟件包有些誤導。另外,我嘗試將Global.java重定位到其他位置,並使用application.global = the.new.package.Global,但它不起作用:它拋出一些異常,並且應用程序無法啓動。有任何想法嗎? – ale64bit

+3

您只能使用'application.global'來更改'Global'對象的類名稱。例如'application.global = SomethingGlobal',但不能將其重定位到不同的包。 –

+1

那麼,我剛搬家並將Global.java重命名爲common.SomethingElse.java,添加了application.global = common.SomethingElse並且它工作正常。所以我想你是錯的。無論如何謝謝。 – ale64bit

8

看起來您忘記取消註釋application.global設置。

以下代碼對我來說工作得很好。

Global.java文件:

package common; 

import play.Application; 
import play.GlobalSettings; 
import play.Logger; 

public class Global extends GlobalSettings { 

    @Override 
    public void beforeStart(Application application) { 
     Logger.error("good bye cruel world"); 
     super.beforeStart(application); 
    } 

    @Override 
    public void onStart(Application application) { 
     Logger.error("good bye cruel world"); 
     super.onStart(application); 
    } 

    @Override 
    public void onStop(Application application) { 
     Logger.error("good bye cruel world"); 
     super.onStop(application); 
    } 
} 

application.conf文件:

# Define the Global object class for this application. 
# Default to Global in the root package. 
application.global=common.Global