使用Ebean NullPointerException播放2.4

时间:2015-10-14 00:40:33

标签: java heroku playframework playframework-2.0 ebean

我一直在努力玩Play!框架,随着方向和主要API变化的不断变化,它是一个不断变化的目标。

我最近有一个不幸的任务,即将与Java 8不兼容的Play 2.1或2.2项目更新为与Java 8兼容的Play 2.4。

编辑:Heroku不会放弃对Java 7的支持。

现在我在Ebean类中处理NullPointerException,我不知道为什么。我有以下代码:

@Entity
public class User extends Model {

    public static Model.Finder<Long, User> find() {
        return new Model.Finder<Long, User>(User.class);
    } 

    public static boolean emailExists(String email) {
        if(User.find().where().eq("email",email).findRowCount() > 0) {
            return true;
        } else {
            return false;
        }
    }
}

运行:

时出现NullPointerException
User.find().where().eq("email",email).findRowCount() > 0

堆栈跟踪是:

java.lang.NullPointerException
at com.avaje.ebean.Model$Find.query(Model.java:548)
at com.avaje.ebean.Model$Find.where(Model.java:742)
at models.User.emailExists(User.java:9)
at controllers.UserController.doLogin(UserController.java:208)

代码在开发中运行良好,但在推送到Heroku时崩溃,为什么会这样?

如您所见,空指针发生在com.avaje.ebean.Model $ Find.query()方法中。我已经检查了Ebean中的代码,试着通过现在的线索来确定可能导致这种情况的原因。我还将Ebean调试打开到最高级别9,ebean似乎正确识别所有实体。

我正在使用:

addSbtPlugin(&#34; com.typesafe.sbt&#34;%&#34; sbt-play-ebean&#34;%&#34; 1.0.0&#34;)

但已升级为:

addSbtPlugin(&#34; com.typesafe.sbt&#34;%&#34; sbt-play-ebean&#34;%&#34; 2.0.0&#34;)

没有帮助解决问题......

对此的任何指导都会非常有用!我玩完了!此时的框架将不再用于任何项目......

1 个答案:

答案 0 :(得分:1)

Heroku不会删除使用Java 7的服务器。我假设您指的是cedar-14 migration,它确实将默认 JDK更改为8.但您仍然可以通过添加来使用Java 7一个system.properties文件到应用程序的根目录,包含以下内容:

java.runtime.version=1.7

也将该文件添加到Git。