Scala "not found: type" 错误
Scala "not found: type" error
我是 scala 菜鸟,我正在为 scala spark 程序编写单元测试用例。当我尝试使用 sbt test
命令 运行 我的 scala 单元测试用例时,出现以下错误
BasicACRStatsTest.scala:8: not found: type BasicACRStats
[error] var basicStats: BasicACRStats = _
[error] ^
BasicACRStatsTest.scala:14: not found: type BasicACRStats
[error] basicStats = new BasicACRStats
[error] ^
[error] two errors found
[error] (test:compile) Compilation failed
我正在使用 intellij,当我尝试引用 class BasicACRStats
它显示 Cannot resolve symbol BasicACRStats
即使我已经在正确的包中声明了它。
BasicACRStat.scala
package com.company.analytics
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.{FileSystem, Path}
import org.apache.hadoop.fs.FileSystem.Statistics
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql.hive.HiveContext
import scala.collection.mutable.ArrayBuffer
import collection.mutable
object BasicACRStats {
def main(args: Array[String]) {
// Some code goes here
}
}
BasicACRStatsTest.scala
import com.company.analytics
import org.scalatest.FunSuite
import org.scalatest.BeforeAndAfter
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
class BasicACRStatsTest extends FunSuite with BeforeAndAfter {
@transient var sc: SparkContext = _
var basicStats: BasicACRStats = _
// some code goes here
}
Simple.sbt
name := "basicACRStats"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.2.0"
libraryDependencies += "org.apache.spark" % "spark-sql_2.10" % "1.1.0"
libraryDependencies += "org.apache.spark" % "spark-hive_2.10" % "1.1.0"
libraryDependencies += "org.scalatest" % "scalatest_2.10" % "1.9.1" % "test"
项目目录结构
projectfoo
.idea
src
main
scala
com
company
analytics
BasicACRStats.scala
test
scala
BasicACRStatTest.scala
target
simple.sbt
我不确定如何解决此问题,请分享您的想法,如果您需要更多信息,请告诉我。
BasicACRStats
在您的示例代码中似乎是 object
,而不是 class
。
对象是单例而不是 class/type。我 有 一种类型,在本例中 BasicACRStats.type
,只有一个 ever 实例。因为它不是一个类型调用 new BasicACRStats
不是有效的 Scala 并且也没有尝试将它用作值的类型。
你想要的大概是声明BasicACRStats
一个class。这将使您的示例代码的其余部分有意义。
我是 scala 菜鸟,我正在为 scala spark 程序编写单元测试用例。当我尝试使用 sbt test
命令 运行 我的 scala 单元测试用例时,出现以下错误
BasicACRStatsTest.scala:8: not found: type BasicACRStats
[error] var basicStats: BasicACRStats = _
[error] ^
BasicACRStatsTest.scala:14: not found: type BasicACRStats
[error] basicStats = new BasicACRStats
[error] ^
[error] two errors found
[error] (test:compile) Compilation failed
我正在使用 intellij,当我尝试引用 class BasicACRStats
它显示 Cannot resolve symbol BasicACRStats
即使我已经在正确的包中声明了它。
BasicACRStat.scala
package com.company.analytics
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.{FileSystem, Path}
import org.apache.hadoop.fs.FileSystem.Statistics
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql.hive.HiveContext
import scala.collection.mutable.ArrayBuffer
import collection.mutable
object BasicACRStats {
def main(args: Array[String]) {
// Some code goes here
}
}
BasicACRStatsTest.scala
import com.company.analytics
import org.scalatest.FunSuite
import org.scalatest.BeforeAndAfter
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
class BasicACRStatsTest extends FunSuite with BeforeAndAfter {
@transient var sc: SparkContext = _
var basicStats: BasicACRStats = _
// some code goes here
}
Simple.sbt
name := "basicACRStats"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.2.0"
libraryDependencies += "org.apache.spark" % "spark-sql_2.10" % "1.1.0"
libraryDependencies += "org.apache.spark" % "spark-hive_2.10" % "1.1.0"
libraryDependencies += "org.scalatest" % "scalatest_2.10" % "1.9.1" % "test"
项目目录结构
projectfoo
.idea
src
main
scala
com
company
analytics
BasicACRStats.scala
test
scala
BasicACRStatTest.scala
target
simple.sbt
我不确定如何解决此问题,请分享您的想法,如果您需要更多信息,请告诉我。
BasicACRStats
在您的示例代码中似乎是 object
,而不是 class
。
对象是单例而不是 class/type。我 有 一种类型,在本例中 BasicACRStats.type
,只有一个 ever 实例。因为它不是一个类型调用 new BasicACRStats
不是有效的 Scala 并且也没有尝试将它用作值的类型。
你想要的大概是声明BasicACRStats
一个class。这将使您的示例代码的其余部分有意义。