线程“主”java.lang.NoClassDefFoundError 中的异常:启动 pyspark 时

Posted

技术标签:

【中文标题】线程“主”java.lang.NoClassDefFoundError 中的异常:启动 pyspark 时【英文标题】:Exception in thread "main" java.lang.NoClassDefFoundError: when launching pyspark 【发布时间】:2015-11-13 14:49:22 【问题描述】:

我只是在Mac上下载spark,我下载的版本是最新的 为 Hadoop 2.6 预构建

当我尝试安装它时,在终端上输入 bin/pyspark 我得到的是以下异常

Exception in thread "main" java.lang.NoClassDefFoundError:    
org/apache/spark/launcher/Main
Caused by: java.lang.ClassNotFoundException: org.apache.spark.launcher.Main
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:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

我在 Google 上查找了一些答案,说我需要更新我的 Java,我刚刚下载了最新的 Java 版本,但仍然收到错误消息

谁能帮我解决这个问题。由于我是Spark的新手,请详细解释

【问题讨论】:

您需要检查几件事才能使其正常工作: - 确保最新的 java 二进制文件在您的路径中 - 确保您已将 SPARK_HOME 设置为正确的路径 1) 在您的终端中运行 java -version 2) 您是否下载了源代码或二进制文件 3) 检查您对 spark 文件夹的权限。下载是否来自同一用户? 谢谢你,我不明白我怎么能做到这一点。您能否发送一些代码,以及关于路径的代码,我该如何更改它。感谢您的帮助 您好,我刚刚检查了我的 java 版本是 1.8.0_65,我认为应该是更新的版本 【参考方案1】:

当我尝试在 Mac OS (10.11 El Captain) 上安装 Spark 1.6.2 时遇到了同样的问题。

安装最新的Java JDK(Java SE Development Kit 8)后,我运行pyspark没有问题。您可以从 Oracle 的网站下载最新的 JDK。

祝你好运!

顺便说一句,我还安装了 Apple 提供的 OS X 10.11 El Capitan 的旧版 Java 6 运行时,因为我在安装过程开始时遇到了错误消息 To use the "java" command-line tool you need to install a JDK

【讨论】:

以上是关于线程“主”java.lang.NoClassDefFoundError 中的异常:启动 pyspark 时的主要内容,如果未能解决你的问题,请参考以下文章

主线程啥都没做,就会等待子线程结束。这是为啥?

Android 异步操作Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )

子线程怎么不阻塞主线程

QT中UI主窗口如何与子线程相互传递参数

java 子线程 回调 主线程

C++怎么在主线程中使用子线程的数据? 比如说主线程中有一个数组,如何在子线程中调用这个数组