Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala spark submit找不到带有java.lang.ClassNotFoundException的类声明_Scala_Maven_Apache Spark - Fatal编程技术网

Scala spark submit找不到带有java.lang.ClassNotFoundException的类声明

Scala spark submit找不到带有java.lang.ClassNotFoundException的类声明,scala,maven,apache-spark,Scala,Maven,Apache Spark,我一直在本地用Scala运行Spark,在Mac上没有任何问题,然后有一天,它突然找不到我的类声明。它使用maven编译得很好,当我运行spark submit时,无论我做了什么更改,它都会做出如下响应。我已经去掉了所有的软件包,只运行了最简单的示例应用程序。知道要测试什么吗?看来这条路不知怎么断了。Scala代码运行程序版本2.10.4,java版本“1.7.0_79”, Spark版本1.5.1 $ /usr/local/spark-1.5.1/bin/spark-submit --clas

我一直在本地用Scala运行Spark,在Mac上没有任何问题,然后有一天,它突然找不到我的类声明。它使用maven编译得很好,当我运行spark submit时,无论我做了什么更改,它都会做出如下响应。我已经去掉了所有的软件包,只运行了最简单的示例应用程序。知道要测试什么吗?看来这条路不知怎么断了。Scala代码运行程序版本2.10.4,java版本“1.7.0_79”, Spark版本1.5.1

$ /usr/local/spark-1.5.1/bin/spark-submit --class “SimpleApp” --master local target/simplesparkproject-0.0.1.jar 
java.lang.ClassNotFoundException: “SimpleApp”
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:274)
    at org.apache.spark.util.Utils$.classForName(Utils.scala:173)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:639)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:120)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
以下是scala脚本的片段:

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf

object SimpleApp {  
  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)
    println("hello world")
  }
}
下面是文件结构:

$ find .
.
./.DS_Store
./pom.xml
./README.txt
./src
./src/main
./src/main/scala
./src/main/scala/SimpleApp.scala
./target
./target/classes
./target/classes/SimpleApp$.class
./target/classes/SimpleApp.class
./target/classes.335735219.timestamp
./target/maven-archiver
./target/maven-archiver/pom.properties
./target/simplesparkproject-0.0.1.jar

你试过sbt吗

我得到了同样的错误,用这个答案我解决了:


查找。
不显示jar中的内容


运行
jar tf simplesparkproject-0.0.1.jar
查看jar文件的内容解决此问题的唯一方法是重新安装spark,然后修改.bashrc,使其不再直接指向Scala。做了这些事情之后,,它按预期工作。

我尝试了sbt和maven,得到了相同的错误$jar tf target/simplesparkproject-0.0.1.jar META-INF/META-INF/MANIFEST.MF SimpleApp$.class SimpleApp.class META-INF/maven/META-INF/maven/myGroupID/META-INF/maven/myGroupID/simplesparkproject/META-INF/maven/myGroupID/simplesparkproject/pom.xmlMETA-INF/maven/myGroupID/simplesparkproject/pom.properties显然会显示在jar文件中。如果我把完整的路径放到罐子里,同样的事情。。。。