【问题标题】:java.lang.ClassNotFoundException: com.github.lwhite1.tablesaw.api.Table error while running Spark-submit using Eclipsejava.lang.ClassNotFoundException: com.github.lwhite1.tablesaw.api.Table 使用 Eclipse 运行 Spark-submit 时出错
【发布时间】:2017-06-17 05:06:02
【问题描述】:

我正在使用 Ubuntu 中的 spark-submit 在 Spark 上执行 java 存档。命令如下。这个 JAR 文件是使用 Maven 包构建的。依赖项在 pom.xml 文件中指定。

]$ spark-submit --class HighScore.Driver --master local[*] JarfilePath/Levelwise_PCFS-0.0.1-SNAPSHOT.jar InputFilePath/K9_Site1.csv 1000.

即使在命令中指定了 packageName.className (HighScore.Driver),我也会收到以下错误。

这是错误信息。

Exception in thread "main" java.lang.NoClassDefFoundError: com/github/lwhite1/tablesaw/api/Table
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
    at java.lang.Class.getMethod0(Class.java:3018)
    at java.lang.Class.getMethod(Class.java:1784)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:727)
    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)
    Caused by: java.lang.ClassNotFoundException: com.github.lwhite1.tablesaw.api.Table
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 10 more

com/github/lwhite1/tablesaw/api/Table 依赖项也在 pom.xml 文件中指定。但它仍然抛出异常。

谁能帮我纠正这个错误。

【问题讨论】:

    标签: java eclipse maven


    【解决方案1】:

    请记住,类加载器(特别是 java.net.URLClassLoader)将在类路径的每个条目中的文件夹 a/b/c/ 中查找包 a.b.c 中的类。

    NoClassDefFoundError 还可以表明您缺少 .jar 文件的传递依赖项,您已针对该文件进行编译并尝试使用该文件。

    例如,如果您有一个类com.example.Foo,编译后您将有一个类文件Foo.class。 比如说你的工作目录是.../project/. 那个类文件必须放在.../project/com/example,你可以将你的类路径设置为.../project/

    请参阅post 了解更多详情。这会很有帮助。

    【讨论】:

    • .class 文件存在于 /home/workspace/project/target/classes/HighScore/Driver.class 中。类路径文件有 。我希望类路径设置正确。我不知道哪里出了问题。
    • 我在 HighScore Package 下有两个课程。一个是HighScore.Driver,它是主类,另一个是从Driver类调用的HighScore.AttributeSelector。我是否需要将上述 spark-submit 命令中的两个类指定为 ]$spark-submit --class HighScore.Driver, HighScore.AttributeSelector --master local[*] /home/hadoopuser/workspace/Levelwise_PCFS/target/Levelwise_PCFS-0.0 .1-SNAPSHOT.jar InputFilePath/K9_Site1.csv 1000。也试过了。这仍然是 ClassNotFoundException。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 2018-03-12
    • 1970-01-01
    相关资源
    最近更新 更多