NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V

最近在学习大数据,然后使用Scala创建Datasets时,运行代码爆出了如下异常:

Exception in thread "main" java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V
    at com.shuai7boy.myscalacode.Person.<init>(Test.scala:17)
    at com.shuai7boy.myscalacode.Test$.main(Test.scala:10)
    at com.shuai7boy.myscalacode.Test.main(Test.scala)

我的程序代码如下:

object Test {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder().appName("spark SQL Demo").master("local").getOrCreate()
    import spark.implicits._
    val caseClassDS = Seq(Person("张三", 23)).toDS()
    caseClassDS.show()
  }
}

case class Person(name: String, age: Int)

按照预期应该打印出如下结果

// +----+---+
// |name|age|
// +----+---+
// |张三| 23|
// +----+---+

但是却报错了,然后网上搜了下解决方案都是scala版本问题,但是我看了下我的版本都对着呢。
无效的方法问题.png
请问我这个怎么解决?谁可以帮帮我~叩谢!

阅读 6.1k
1 个回答

问题解决了,我仔细对比了下项目,发现了引用了两处,一处使用Maven引用的Spark,一处手动引用的本地包,然后就报错了。去掉了本地宝,都改为了Maven引用就好了。
总结:要看清,不要本地包和Maven包同时使用,这是一个坑。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏