2014-12-25 5 views
8

이 질문이 바보가 되다니 죄송합니다.하지만 실수로 쉽게 찾을 수 없으므로 이미 여기 및 다른 사이트에서 많은 게시물을 확인했습니다. Java를 사용하여 Play 2.3.7 프로젝트를 설정했습니다. 공통 디렉토리에있는 app 디렉토리 아래에 Global.java 파일을 만들었습니다. 이 파일에서 onStart (및 다른 후크)를 덮어 쓰지 만 작동시키지 않습니다. 그들은 단순히 전혀 실행하지 않습니다. Play Framework 2.3.7의 글로벌 onStart가 작동하지 않습니까?

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 

무슨 문제가 될 수 있습니다 여기에 Global.java 파일입니까? 감사.

답변

6

Global 개체는 기본 패키지에 있어야하므로 package common을 제거해야합니다.

documentation의 첫 번째 단락에 설명 된 것과 같습니다.

+0

글쎄, 그것은 실제로 작동합니다. 감사. 이제 생성 된 주석은 기본적으로 공통 패키지를 언급하는 오해를 불러 일으킬 수 있습니다. 또한 Global.java를 어딘가에 재배치하고 application.global = the.new.package.Global을 사용하려고 시도했지만 작동하지 않습니다 : 일부 예외가 발생하고 응용 프로그램이 시작되지 않습니다. 어떤 아이디어? – ale64bit

+3

'global' 오브젝트의 클래스 명을 변경하기 위해서만'application.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