2014-12-25 2 views
8

Извините, если этот вопрос станет глупым, но я просто не могу найти свою ошибку, и я проверил уже много сообщений здесь, в SO и других сайтах. У меня есть проект Play 2.3.7 с использованием Java. Я создал файл 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

Объект должен находиться в пакете по умолчанию, поэтому вам необходимо удалить 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 
Смежные вопросы