Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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
Java scala代码的spark sbumit中的ClassNotFoundException_Java_Scala_Apache Spark - Fatal编程技术网

Java scala代码的spark sbumit中的ClassNotFoundException

Java scala代码的spark sbumit中的ClassNotFoundException,java,scala,apache-spark,Java,Scala,Apache Spark,当我将程序导出到jar文件并执行它时,我得到一个java.lang.ClassNotFoundException错误 下面是我正在使用的代码 提前感谢您的帮助 SBT name := "testFunctions" version := "1.0" scalaVersion := "2.11.8" libraryDependencies += "com.github.pathikrit" %% "better-files" % "2.17.1" libraryDependencies ++

当我将程序导出到jar文件并执行它时,我得到一个java.lang.ClassNotFoundException错误

下面是我正在使用的代码

提前感谢您的帮助

SBT

name := "testFunctions"

version := "1.0"

scalaVersion := "2.11.8"

libraryDependencies += "com.github.pathikrit" %% "better-files" % "2.17.1"
libraryDependencies ++= Seq(
  "org.apache.spark" % "spark-core_2.11" % "2.1.0",
  "org.apache.spark" % "spark-sql_2.11" % "2.1.0",
  "com.github.pathikrit" %% "better-files" % "2.17.1"
)

initialize := {
  val _ = initialize.value
  if (sys.props("java.specification.version") != "1.8")
    sys.error("Java 8 is required for this project.")
}
Scala代码

/**
  * Created by cloudera on 7/23/17.
  */

import better.files.File._
import org.apache.spark.sql.SparkSession


object func {


  val forDelete = (root/"/home/cloudera/Documents/fabo")
    .createIfNotExists()

  if (forDelete.exists)
    forDelete.delete()


  def main(args:Array[String]) : Unit = {

    val spark = SparkSession.builder
      .master("local")
      .appName("Get ForEx Data")
      .getOrCreate()



  }

}
执行jar文件的命令行

spark-submit --class func --master local[*] /home/cloudera/testFunctions/out/artifacts/testFunctions_jar
错误

java.lang.ClassNotFoundException: func
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.spark.util.Utils$.classForName(Utils.scala:229)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:695)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
META-INF/MANIFEST.MF
func.class
func$.class
**代码所在的树结构如下所示**- 因此,名为func的类位于scala目录中

\main
    \java
    \resources
    \scala
        -func(class)
    \scala-2.11
jar.jar的jar tf name的输出

java.lang.ClassNotFoundException: func
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.spark.util.Utils$.classForName(Utils.scala:229)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:695)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
META-INF/MANIFEST.MF
func.class
func$.class

这篇文章看起来很相关:我们能看看func类所在的树结构吗?嘿,你能运行
jar tf你的_output_file.jar
并检查类是否在那里吗?谢谢你的快速响应。我已经更新了帖子以包含树结构,当运行jar tf name_of_jar.jar时,我得到了以下内容:META-INF/MANIFEST.MF func.class func$.class