全球onStart on Play Framework 2.3.7无效?

ale*_*bit 8 java scala sbt playframework playframework-2.3

对不起,如果这个问题变得愚蠢,但我根本找不到我的错误,我在SO和其他网站上已经检查了很多帖子.我使用Java设置了一个Play 2.3.7项目.我在app目录下的common包中创建了一个Global.java文件.在该文件中我覆盖onStart(和其他钩子),但我没有让它们工作.他们根本就不执行.这是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);
        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");
    }
}
Run Code Online (Sandbox Code Playgroud)

在application.conf中,这是相关部分,默认情况下注释:

# Define the common.Global object class for this application.
# Default to common.Global in the root package.
# application.global=common.Global
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?谢谢.

Mik*_*ger 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

application.conf文件:

# Define the Global object class for this application.
# Default to Global in the root package.
application.global=common.Global
Run Code Online (Sandbox Code Playgroud)


Mic*_*jac 6

Global对象必须位于默认包中,因此您需要删除package common.

文件第一段所述.

  • 您只能使用`application.global`来更改`Global`对象的类名.例如`application.global = SomethingGlobal`,但你不能将它重新定位到不同的包. (4认同)