Sono nuovo di scala quando Iam sta cercando di eseguire l'aggiornamento sbt che sto ottenendo
[error] /home/workspace/Scala/SparkTwitterStreaming/project/project/build.scala:1: expected class or object definition
[error] name := "SparkTwitterStreaming"
[error] ^
[error] /home/workspace/Scala/SparkTwitterStreaming/project/project/build.scala:2: expected class or object definition
[error] version := "1.0"
[error] ^
[error] /home/workspace/Scala/SparkTwitterStreaming/project/project/build.scala:3: expected class or object definition
[error] scalaVersion := "2.11.6"
[error] ^
[error] /home/workspace/Scala/SparkTwitterStreaming/project/project/build.scala:5: expected class or object definition
[error] libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "1.6.2"
[error] ^
[error] /home/workspace/Scala/SparkTwitterStreaming/project/project/build.scala:6: expected class or object definition
[error] libraryDependencies += "com.typesafe" % "config" % "1.3.0"
[error] ^
[error] 5 errors found
build.scala
/ build.sbt
??
name := "SparkTwitterStreaming"
version := "1.0"
scalaVersion := "2.11.6"
libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "1.6.2"
libraryDependencies += "com.typesafe" % "config" % "1.3.0"
risposte:
1 per risposta № 1Sembra che tu stia confondendo .scala
e .sbt
File. SBT consente di definire la build in due modi diversi. .scala
i file sono, beh, normali file Scala, quindi non possono avere il codice (e name := "SparkTwitterStreaming"
ecc. in SBT sono solo codice Scala) al massimo livello, deve essere all'interno di un tratto / classe / oggetto. SBT si occupa di avvolgere .sbt
file in questo modo.
SparkTwitterStreaming/project/project/build.scala
sembra anche sbagliato: lì siamo casi in SBT quando si utilizza un file sotto project/project
, ma questo non è uno di quelli. Probabilmente vuoi spostare questo file in SparkTwitterStreaming/build.sbt
.
2 per risposta № 2
Quindi in pratica ... un progetto sbt minim minimale ha una struttura simile a quella seguente,
YourProject
├── build.sbt
└── src
└── main
└── scala
└── Main.scala
E un progetto un po 'più dettagliato sarà così,
SparkTwitterStreaming
├── build.sbt
├── project
│ ├── build.properties
│ └── plugins.sbt
└── src
└── main
└── scala
└── YouCode.scala
E un minimo build.sbt
sembra,
name := "SparkTwitterStreaming"
version := "1.0"
scalaVersion := "2.11.6"
libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "1.6.2"
libraryDependencies += "com.typesafe" % "config" % "1.3.0"
Ora alcune persone amano usare build.scala
invece di build.sbt
, in tal caso questo build.scala
dovrebbe essere posizionato all'interno SparkTwitterStreaming/project
directory.
SparkTwitterStreaming
├── project
│ ├── build.properties
│ ├── plugins.sbt
│ └── build.scala
└── src
└── main
└── scala
└── YouCode.scala
Inoltre, per sopra build.sbt
, l'equivalente build.scala
sembrerà,
import sbt._
import Keys._
object MyBuild extends Build { // <--- here MyBuild can be renamed to anything
// if you needed extra resolvers
val pResolvers = Seq(
"Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
)
val pDependencies = Seq(
"org.apache.spark" % "spark-core_2.11" % "1.6.2",
"com.typesafe" % "config" % "1.3.0"
)
val pBuildSettings = Seq (
name := "SparkTwitterStreaming",
version := "1.0",
scalaVersion := "2.11.6",
resolvers ++= pResolvers,
libraryDependencies ++= pDependencies
)
lazy val root = project.in(file(".")).settings(pBuildSettings)
}