2014-12-25 9 views
8

Scusate se questa domanda diventa sciocca, ma semplicemente non riesco a trovare il mio errore e ho già controllato molti post qui su SO e su altri siti. Ho installato un progetto Play 2.3.7 utilizzando Java. Ho creato un file Global.java nel pacchetto comune nella directory dell'app. In quel file sovrascrivo onStart (e altri hook) ma non riesco a farli funzionare. Semplicemente non eseguono affatto. Ecco il file Global.java:Global onStart su Play Framework 2.3.7 non funziona?

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

E dentro l'application.conf, ecco la parte in questione, che viene commentato per impostazione predefinita:

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

Quale può essere il problema? Grazie.

risposta

6

L'oggetto Global deve risiedere nel pacchetto predefinito, quindi è necessario rimuovere package common.

Come indicato nel primo paragrafo del documentation.

+0

Beh, funziona se mi trasferisco al pacchetto di default, anzi. Grazie. Ora, i commenti generati sono un po 'fuorvianti menzionando il pacchetto comune di default. Inoltre, ho provato a ricollocare Global.java da qualche altra parte e utilizzare application.global = the.new.package.Global, ma non funziona: genera qualche eccezione e l'applicazione non si avvia. Qualche idea? – ale64bit

+3

È possibile utilizzare solo 'application.global' per modificare il nome della classe dell'oggetto' Global'. per esempio. 'application.global = SomethingGlobal', ma non puoi trasferirlo in un altro pacchetto. –

+1

Bene, ho appena spostato e rinominato Global.java in common.SomethingElse.java, aggiunto application.global = common.SomethingElse e ha funzionato. Quindi immagino che ti sbagli. Grazie in ogni caso. – ale64bit

8

Sembra che tu abbia dimenticato di decommentare l'impostazione application.global.

Il seguente codice ha funzionato bene per me.

file di 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); 
    } 
} 

file di application.conf:

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