我一直在努力玩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;
}
}
}
运行:
时出现NullPointerExceptionUser.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;)
没有帮助解决问题......
对此的任何指导都会非常有用!我玩完了!此时的框架将不再用于任何项目......
答案 0 :(得分:1)
Heroku不会删除使用Java 7的服务器。我假设您指的是cedar-14 migration,它确实将默认 JDK更改为8.但您仍然可以通过添加来使用Java 7一个system.properties
文件到应用程序的根目录,包含以下内容:
java.runtime.version=1.7
也将该文件添加到Git。