Intellij idea mllib 1.1.0中的NoClassDefError

Intellij idea mllib 1.1.0中的NoClassDefError,intellij-idea,apache-spark,apache-spark-mllib,Intellij Idea,Apache Spark,Apache Spark Mllib,我正在尝试运行twitter分类器-。它使用Spark来分析这些数据源。 我已经在IntelliJ上加载了该项目,外部库中显示的一个依赖项org.apache.spark.mllib无法正常工作 我在运行它时遇到一个java.lang.NoClassDefFound错误。但这种依赖已经存在 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/mllib/feature/HashingTF a

我正在尝试运行twitter分类器-。它使用Spark来分析这些数据源。 我已经在IntelliJ上加载了该项目,外部库中显示的一个依赖项org.apache.spark.mllib无法正常工作

我在运行它时遇到一个java.lang.NoClassDefFound错误。但这种依赖已经存在

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/mllib/feature/HashingTF
  at com.databricks.apps.twitter_classifier.Utils$.<init>(Utils.scala:12)
  at com.databricks.apps.twitter_classifier.Utils$.<clinit>(Utils.scala)
  at com.databricks.apps.twitter_classifier.Collect$.main(Collect.scala:26)
  at com.databricks.apps.twitter_classifier.Collect.main(Collect.scala)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:483)
  at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: java.lang.ClassNotFoundException: org.apache.spark.mllib.feature.HashingTF
  at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  ... 9 more

我认为您必须将mllib依赖项更改为作用域运行时。在maven中,您可以添加运行时标记来定义对运行时的依赖范围

import AssemblyKeys._

name := "spark-twitter-lang-classifier"

version := "1.0"

scalaVersion := "2.10.4"

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.1.0" % "provided"

libraryDependencies += "org.apache.spark" %% "spark-mllib" % "1.1.0" % "provided"

libraryDependencies += "org.apache.spark" %% "spark-sql" % "1.1.0" % "provided"

libraryDependencies += "org.apache.spark" %% "spark-streaming" % "1.1.0" % "provided"

libraryDependencies += "org.apache.spark" %% "spark-streaming-twitter" % "1.1.0"

libraryDependencies += "com.google.code.gson" % "gson" % "2.3"

libraryDependencies += "org.twitter4j" % "twitter4j-core" % "3.0.3"

libraryDependencies += "commons-cli" % "commons-cli" % "1.2"

resolvers += "Akka Repository" at "http://repo.akka.io/releases/"

assemblySettings

mergeStrategy in assembly := {
  case m if m.toLowerCase.endsWith("manifest.mf")          => MergeStrategy.discard
  case m if m.toLowerCase.matches("meta-inf.*\\.sf$")      => MergeStrategy.discard
  case "log4j.properties"                                  => MergeStrategy.discard
  case m if m.toLowerCase.startsWith("meta-inf/services/") => MergeStrategy.filterDistinctLines
  case "reference.conf"                                    => MergeStrategy.concat
  case _                                                   => MergeStrategy.first
}