2012-11-19 34 views
3

當我嘗試編譯項目中,我得到以下異常:播放2.0意外的異常的StackOverflowError:空

! Internal server error, for request [GET /] -> 

play.api.UnexpectedException: Unexpected exception [StackOverflowError: null] 
    at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$4$$anonfun$apply$12.apply(PlayReloader.scala:233) ~[na:na] 
    at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$4$$anonfun$apply$12.apply(PlayReloader.scala:226) ~[na:na] 
    at scala.Option.map(Option.scala:133) ~[scala-library.jar:0.11.3] 
    at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$4.apply(PlayReloader.scala:226) ~[na:na] 
    at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$4.apply(PlayReloader.scala:224) ~[na:na] 
    at scala.Either$LeftProjection.map(Either.scala:183) ~[scala-library.jar:0.11.3] 
java.lang.StackOverflowError: null 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:731) ~[scala-compiler.jar:na] 
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4271) ~[scala-compiler.jar:na] 
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4138) ~[scala-compiler.jar:na] 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:731) ~[scala-compiler.jar:na] 
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4271) ~[scala-compiler.jar:na] 
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedApply$1$1.apply(Typers.scala:3353) ~[scala-compiler.jar:na] 

我發現在播放2問題跟蹤同一issue,他們說,當路由文件增長它使這種例外。

有沒有解決這個異常,因爲我的項目不再編譯?

我使用的播放2.0.3斯卡拉(我的路線文件大約150線)

+1

爲什麼不按照關於您鏈接到的問題的評論中的建議簡單地將_JAVA_OPTIONS環境變量設置爲「-Xms64m -Xmx1024m -Xss2m」? – Daan

+0

嗯,我想知道這個問題是否有解決辦法。我會嘗試這種解決方法作爲最後的手段。 –

+1

也許可以在你的路徑文件中使用正則表達式來減少行數? –

回答

1

我有與Play 2.0.6相同的問題。升級到2.0.8,並沒有幫助。然後,我修改了$ play_dir/framework/build腳本,因此它使用-Xss2M而不是-Xss1M並且問題消失(我現在可以正常編譯)。

0

沒有與戲劇具有路由文件的大小做2.0的錯誤,而不是在條款路線數量,而是文件的物理大小(32768字節)。看來這個循環已經增加到了2.0.4,並且被2.1消除了。

https://groups.google.com/forum/?fromgroups=#!topic/play-framework/fZvgWJoCPLc

因此,首先,我想看看路由文件的物理尺寸。可能會刪減評論和/或刪除註釋掉的行。接下來,我會嘗試升級到2.0.4版本。這是一個相當簡單的過程。你只需要下載2.0.4,點play這個新的路徑,並更新項目的/project/plugins.sbt閱讀:

// Use the Play sbt plugin for Play projects 
addSbtPlugin("play" % "sbt-plugin" % "2.0.4") 

更長期修復可能升級項目到2.1一旦變得穩定。