2016-09-16 218 views
0

我是新来斯卡拉时荫试图执行SBT更新我得到Scala构建失败?

[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" 
+0

什么是你的'build.scala' /'build.sbt'是什么样子?你在哪个目录下运行'sbt update'命令? –

+0

'name:=“SparkTwitterStreaming” version:=“1.0” scalaVersion:=“2.11.6” libraryDependencies + =“org.apache.spark”%“spark-core_2.11”%“1.6.2”。 这是什么?它具有bin,src,项目的文件夹SourceFolder:SparkTwitterStreaming – Anji

+0

这是什么?它是'build.sbt'吗?或'build.scala'?它位于什么目录?什么是你的sbt项目的直接结构?你从哪里调用sbt?请包括你的问题中的所有内容。 –

回答

1

看起来你是在混淆.scala.sbt文件。 SBT允许以两种不同的方式定义构建。 .scala文件是正常的Scala文件,所以它们不能在顶层有代码(并且在SBT中有name := "SparkTwitterStreaming"等等,只是Scala代码),它必须位于trait/class/object中。 SBT本身负责以这种方式包装.sbt文件。

SparkTwitterStreaming/project/project/build.scala看起来也错了:有案件在SBT时,你会使用一个文件project/project下,但是这是不是其中之一。你可能想把这个文件移动到SparkTwitterStreaming/build.sbt

+0

感谢它的工作 – Anji

2

所以基本上...有效最小SBT项目有像下面的结构,

YourProject 
├── build.sbt 
└── src 
    └── main 
     └── scala 
      └── Main.scala 

,有点更详细的项目会是这样,

SparkTwitterStreaming 
├── build.sbt 
├── project 
│ ├── build.properties 
│   └── plugins.sbt 
└── src 
    └── main 
     └── scala 
      └── YouCode.scala 

和最小build.sbt外观like,

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" 

现在有些人喜欢用build.scala而不是build.sbt,在这种情况下,此build.scala应位于SparkTwitterStreaming/project目录内。

SparkTwitterStreaming 
├── project 
│ ├── build.properties 
│ ├── plugins.sbt 
│ └── build.scala 
└── src 
    └── main 
     └── scala 
      └── YouCode.scala 

而且,上面build.sbt,相当于build.scala的样子,

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) 
} 
+0

感谢您的信息 – Anji