独立应用程序中的Spark Java错误

时间:2015-12-18 10:33:12

标签: java spark-java

我能够使用launch4j创建一个可执行文件,它在我的机器上运行正常。当我发送给某人在他们的Windows机器上运行时,他们会收到以下错误:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: spark/TemplateEngine
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.privateGetMethodRecursive(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: spark.TemplateEngine
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 7 more

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

我遇到了这个问题,因为我的java版本默认为9,并且不知何故Spark没有识别它。所以我改为版本8并且它有效。改变linux:

sudo update-java-alternatives -s java-1.8.0-openjdk-amd64

在您的情况下,您可能需要其他版本,因此请选择您的版本(列出计算机中的版本使用-l选项)。

答案 1 :(得分:0)

必须在类路径中设置相对路径,以便可执行文件可以找到jar文件

答案 2 :(得分:0)

如果您的maven依赖项没有将OPTIONS设置为编译时间(默认值)并且依赖项jar在编译时不可用,则也可能发生此异常。例如,如果您的Edittext编译器中的maven依赖项<scope>将假定JRE /环境将提供这些依赖项jar,但是当编译源并且未找到这些依赖项时,将抛出此异常。

例如 - 如果在编译期间找不到spark-mllib_2.11依赖项,下面可能会导致此异常,尽管它们被添加并且在编辑期间没有错误;

<scope>provided</scope>