scala – 使用scopt OptionParser和Spark时的NoClassDefFoundErr
发布时间:2020-12-16 18:36:20 所属栏目:安全 来源:网络整理
导读:我使用Apache Spark版本1.2.1和 Scala版本2.10.4.我想让示例 MovieLensALS正常工作.但是,我遇到了 scopt库的错误,这是代码中的一项要求.任何帮助,将不胜感激. 我的build.sbt如下: name := "Movie Recommender System"version := "1.0"scalaVersion := "2.10
我使用Apache Spark版本1.2.1和
Scala版本2.10.4.我想让示例
MovieLensALS正常工作.但是,我遇到了
scopt库的错误,这是代码中的一项要求.任何帮助,将不胜感激.
我的build.sbt如下: name := "Movie Recommender System" version := "1.0" scalaVersion := "2.10.4" libraryDependencies += "org.apache.spark" %% "spark-core" % "1.2.1" libraryDependencies += "org.apache.spark" %% "spark-graphx" % "1.2.1" libraryDependencies += "org.apache.spark" % "spark-mllib_2.10" % "1.2.1" libraryDependencies += "com.github.scopt" %% "scopt" % "3.2.0" resolvers += Resolver.sonatypeRepo("public") 我得到的错误如下: Exception in thread "main" java.lang.NoClassDefFoundError: scopt/OptionParser at MovieLensALS.main(MovieLensALS.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) Caused by: java.lang.ClassNotFoundException: scopt.OptionParser at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) ... 8 more Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 在运行sbt程序集来构建jar时,我收到以下错误: [error] Not a valid command: assembly [error] Not a valid project ID: assembly [error] Expected ':' (if selecting a configuration) [error] Not a valid key: assembly [error] assembly [error] ^ 编辑:根据Justin Piphony的建议,在sbt的GitHub页面中列出的解决方案帮助解决了这个错误.基本上在项目/目录中创建文件assembly.sbt并添加该行 请注意,应根据使用的版本添加版本. 解决方法
你需要在jar中打包scopt. sbt默认不这样做.要创建这个胖罐,您需要使用
sbt-assembly
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |