2015-10-14 74 views
1

我一直在玩Play!框架,隨着方向和主要API變化的不斷變化,它是一個不斷移動的目標。用Ebean播放2.4 NullPointerException

我有最近更新播放2.1或2.2的項目,這不是與Java 8兼容的不幸任務,在播放2.4是與Java 8

編輯兼容:Heroku的不下降支持Java 7.

現在我正在處理一個NullPointerException INSIDE Ebean類,我不知道爲什麼。在運行時

@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( 「com.typesafe.sbt」 % 「SBT-播放ebean」 % 「1.0.0」)

,但升級爲:

addSbtPlugin( 「com.typesafe.sbt」 % 「SBT-播放ebean」 % 「2.0.0」)

這並沒有幫助解決問題....

任何指導,到這會是這樣的幫助!我在遊戲中!框架在這一點上,將不再使用它的任何項目.....

回答

1

Heroku不刪除服務器與Java 7.我假定你指的是cedar-14 migration,它確實將默認 JDK更改爲8但你仍然可以使用Java 7中添加system.properties文件到您的應用程序的根目錄與這些內容:

java.runtime.version=1.7 

添加一個文件到Git爲好。

+0

感謝您提供這些信息,雖然這確實解決了部署問題,但仍然不確定爲何Ebean在開發環境中運行時不會在Heroku上部署。 – ossys

+0

我懷疑它與你的應用程序中的數據庫配置有關。如果您在http://help.heroku.com打開一張票,我們可以仔細查看 – codefinger

+0

我會繼續並提交一張票來嘗試解決這個問題,謝謝! – ossys