线程“主”java.lang.NoClassDefFoundError 中的异常:IntelliJ 中的 org/apache/spark/ml/feature/VectorAssembler
Posted
技术标签:
【中文标题】线程“主”java.lang.NoClassDefFoundError 中的异常:IntelliJ 中的 org/apache/spark/ml/feature/VectorAssembler【英文标题】:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/ml/feature/VectorAssembler in IntelliJ 【发布时间】:2018-05-20 07:08:30 【问题描述】:我正在尝试使用 IntellijIDEA 中的线性回归在 Spark ML 中构建模型。
在拟合模型之前,我应该创建一个具有feature
列的VectorAssembler
。
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.ml.linalg.Vectors
//creating features column
val assembler = new VectorAssembler()
.setInputCols(Array("col4","col5","col6","col7"))
.setOutputCol("features")
线程“主”java.lang.NoClassDefFoundError 中的异常: org/apache/spark/ml/feature/VectorAssembler 在 energydata$.main(energydata.scala:35) 在 energydata.main(energydata.scala) 原因: java.lang.ClassNotFoundException: org.apache.spark.ml.feature.VectorAssembler 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 2 更多
但这会在 Intellij 中产生错误。当我在 spark-shell 中尝试相同的方法时,它可以工作。
任何人都可以建议我在这里可能出错的地方吗?
name := "hello"
version := "1.0"
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.1.0"
libraryDependencies += "org.apache.spark" % "spark-sql_2.11" % "2.1.0"
libraryDependencies += "com.datastax.spark" %% "spark-cassandra-connector" % "2.0.6"
libraryDependencies += "org.apache.spark" %% "spark-mllib" % "2.1.0" % "provided"
【问题讨论】:
试试Invalidate Caches and Restart
intellij
好吧,从 mllib 依赖项中删除“provided”关键字,显然这些类在运行时丢失了
【参考方案1】:
我在找不到其他类时遇到了类似的问题。这是因为,在 maven 依赖项中,它说“<scope>provided</scope>
”。我删除了它,按下了重新加载,现在它可以工作了。
【讨论】:
【参考方案2】:我在运行 spark 应用程序时也遇到了同样的错误。我刚刚删除 (%%"provide") spark sql的依赖范围
【讨论】:
以上是关于线程“主”java.lang.NoClassDefFoundError 中的异常:IntelliJ 中的 org/apache/spark/ml/feature/VectorAssembler的主要内容,如果未能解决你的问题,请参考以下文章
Android 异步操作Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )