爲了使用最新的Play WS Api,升級到play 2.6.21html
1.配置修改java
根據官網的升級指南,修改plugins.sbt文件,更改插件版本號:addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.21")
web
build.sbt文件中,把guice和play-json單獨加入。json
libraryDependencies += guice libraryDependencies += "com.typesafe.play" %% "play-json" % "2.6.0"
build.sbt中修改依賴庫cache和JavaWs的名字爲ehcache和ws。修改後以下windows
libraryDependencies ++= Seq( javaJdbc , ehcache , ws)
而後點擊菜單View/Tool windwos/SBT
打開sbt窗口,點擊刷新,而後下載新的依賴包,雖然消耗很多時間,最終順利完成,沒有遇到太大麻煩。服務器
2.運行ui
修改完配置以後,運行play(使用 sbt run命令)。提示 \views\index.scala.html:18: not found: value welcome
。此文件爲首頁的Twirl模板。插件
推測多是2.6版本和2.5版本的首頁模板不一樣,因而到官網下載2.6版本的starter-example,找到views/index.scala.html
並覆蓋項目的相應文件。再次運行,仍是提示一樣錯誤。命令行
這個錯誤的緣由是views.html包下沒有welcome對象,views.html.play20包下也沒有,聽說是由於低版本的play下載了某個低版本依賴包,致使高版本play再也不下載新版本的依賴包致使。此問題沒法解決,由於這個歡迎頁面無關緊要,所以最終決定從views/index.scala.html
中刪除@welcome的調用。編譯經過,開發模式下運行沒有問題。scala
3.生產環境部署
和上一版本同樣,命令行上 運行sbt dist或者sbt universal:packageBin打包項目爲zip文件。複製到服務器上,解壓zip文件,運行/bin/xxxx.bat啓動web服務器,出現「輸入行太長」的錯誤沒法啓動web服務器。
直接緣由是java -cp "..." 命令太長,超過windows命令行8000字節的限制,致使windows沒法執行此命令。這個命令長的部分是 -cp後面指定的jar包文件,由於依賴的jar包太多,sbt把jar文件名所有串接起來放在cp後面,致使這個參數很是長。上一版本還勉強沒超過限制,升級到新版本後,依賴包又增長了不少個,致使命令長度超限制。
「輸入行太長」錯誤的通常解決方法是,把bat文件所在路徑的基礎路徑名儘量縮短,把bat的上兩級目錄的文件夾名縮短到2個字符,再運行bat文件,這時再也不報「輸入行太長」錯誤,但出現新錯誤「沒法找到或者加載主類play.core.server.ProdServerStart」的錯誤。
一開始懷疑是javac選項或者jdk版本致使的,用了很長時間排查仍然沒法解決問題,在stackoverflow上找到的方法也不成功。偶然想到,這個錯誤是否是也是由於命令長度太長致使的,因而在stackoverflow上找到一個完全解決命令太長的方法。在build.sbt文件中添加插件LauncherJarPlugin,原本不抱太大但願,想不到運行sbt start居然成功了,而後打包部署也成功了。添加插件LauncherJarPlugin的語句:
lazy val `xxxx` = (project in file(".")).enablePlugins(PlayJava,LauncherJarPlugin)
至此,play framework2.6.21升級成功完成。