2014-12-25 10 views
8

Przepraszam, jeśli to pytanie okazuje się głupie, ale po prostu nie mogę znaleźć mojego błędu i sprawdziłem już wiele postów tutaj w SO i innych witrynach. Mam skonfigurować projekt Play 2.3.7 przy użyciu Java. Utworzono plik Global.java we wspólnym pakiecie w katalogu aplikacji. W tym pliku zastępuję onStart (i inne haki), ale nie mogę ich uruchomić. Po prostu nie działają w ogóle. Oto plik Global.java:Global onStart na Play Framework 2.3.7 nie działa?

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"); 
    } 
} 

i wewnątrz application.conf, oto odpowiednia część, która jest domyślnie skomentował:

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

Co może być problemem? Dzięki.

Odpowiedz

6

Obiekt Global musi znajdować się w domyślnym pakiecie, dlatego należy usunąć package common.

Jak podano w pierwszym akapicie documentation.

+0

Cóż, to działa, jeśli przeniosę je do standardowego pakietu, rzeczywiście. Dzięki. Teraz wygenerowane komentarze są nieco mylące, domyślnie wspominając o wspólnym pakiecie. Próbowałem też przenieść Global.java gdzieś indziej i użyć application.global = the.new.package.Global, ale to nie działa: rzuca wyjątek i aplikacja się nie uruchamia. Jakieś pomysły? – ale64bit

+3

Możesz użyć 'application.global' tylko do zmiany nazwy klasy obiektu' Global'. na przykład 'application.global = SomethingGlobal', ale nie możesz przenieść go do innej paczki. –

+1

Po prostu przeniosłem się i zmieniono nazwę Global.java na common.SomethingElse.java, dodano application.global = common.SomethingElse i zadziałało. Sądzę, że się mylisz. W każdym razie dzięki. – ale64bit

8

Wygląda na to, że zapomniałeś odkomentować ustawienie application.global.

Poniższy kod działał dobrze dla mnie.

plik 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); 
    } 
} 

plik application.conf:

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