about 3 years ago

Scala似乎在國外很紅啊,很多雲端應用也有採用scala做為開發語言,甚至號稱R版的java在統計功能開發上似乎很好用,在資料科學年會上講者大力推薦還說用了就回不去java啦,似乎看到了許多可能性,所以也想來學著使用,只是中文資料少啊,其實跟java有本質上的差異,所以很花時間在學習,但是語言本身倒不是難懂。

我是升級控啊差點搞死自己....這邊練習直接用上最新版的啊Scala 2.11.4

安裝IntelliJ

先到IntelliJ官網下載吧,剛好也出新版的也玩一下

安裝步驟很簡單就下一步道安裝完成吧






開啟並安裝外掛

新啟動畫面好看不少


這是新的介面

外掛管理功能藏到右下腳Configure裡面了

開啟Plugins功能

開啟Browse JetBrains Plugins並搜尋scala

點下去安裝就可以了


完成後回到前一頁Plugins再開啟Browse Repositories並搜尋sbt

一樣點下去安裝


離開套件管理器的時候會需要重啟

建立spray、akka專案

選擇Create New Project


選擇scala專案並使用sbt工具

舉例來說我建立了一個scala1的專案

一開始還會需要下載一些套件等下載完再看就是正常的

整個專案結構如下

先增加外掛喔,但是不知道為什麼每行指令中間要留一行,不然會錯誤

plugins.sbt
logLevel := Level.Warn

addSbtPlugin("io.spray" % "sbt-revolver" % "0.7.1")

addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.1.2")

再來修改build.sbt

build.sbt
name := "scala1"

version := "1.0"

scalaVersion := "2.11.4"

scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")

resolvers ++= Seq(
  "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/",
  "Spray repository" at "http://repo.spray.io/"
)

libraryDependencies ++= {
  val akkaV = "2.3.7"
  val sprayV = "1.2.0"
  Seq(
    //"org.java-websocket"  %   "Java-WebSocket" % "1.3.1",
    "org.json4s" % "json4s-native_2.11" % "3.2.11",
    "io.spray" % "spray-json_2.11" % "1.3.1",
    "io.spray" % "spray-can_2.11" % "1.3.2",
    "io.spray" % "spray-routing_2.11" % "1.3.2",
    "com.typesafe.akka" % "akka-actor_2.11" % akkaV,
    "com.typesafe.akka" % "akka-testkit_2.11" % akkaV % "test",
    "io.spray" % "spray-testkit_2.11" % "1.3.2" % "test",
    "org.scalatest" % "scalatest_2.11" % "2.2.2" % "test",
    "junit" % "junit" % "4.11" % "test",
    //"org.specs2" % "specs2_2.11" % "2.4.13" % "test",
    "org.specs2" % "specs2-core_2.11" % "2.4.13" % "test"
  )
}

因為scala版本用最新的,整個相依性都要變動,一直試了很久

specs2會相依這個套件(scalaz-stream),但是這套件沒有scala 2.11版啊
所以會出現錯誤

sbt.ResolveException: unresolved dependency: org.scalaz.stream#scalaz-stream_2.11;0.5a: not found
    at sbt.IvyActions$.sbt$IvyActions$$resolve(IvyActions.scala:217)
    at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:126)

所以改成specs2-core_2.11,是參考這邊的specs2 で unresolved dependency: org.scalaz.stream#scalaz-stream_2.11;0.5a: not found

目前看來環境OK啦,希望後面不會有雷XD

之後再來試框架

套件庫
spray-template
使用Spray.io搭建Rest服务
sprayでwebサービス作るチュートリアル 第2回

← Java 列印控制 logback試用 →
 
comments powered by Disqus