在spark上运行scala代码,出现ClassNotFoundException

来源:互联网 发布:蜂窝网络有电信的吗 编辑:程序博客网 时间:2024/06/08 09:10

 几个jvm运行报错说明

  1. 如名字所言,一个exception,一个error, 而error是不建议捕捉的;
  2. classNotFound主要发生在Class.forName, ClassLoader.loadClass, Classloader.findSystemClass时动态加载类到内存中时,如果没有找到该类就会抛;还有一个原因是该类已经加载到内存中去了,此时另一个类加载器又尝试动态从同一个包中加载这个类;
  3. noClassDefFoundError主要由jvm抛出,大部分发生在new的时候却没有找到该类的定义。这个类在编译的时候有存在的,运行时却找不到。
  4. classNotFoundException发生在装入阶段;noClassDefFoundError发在生编译后使用阶段;
    加载时从外存储器找不到需要的class就出现ClassNotFoundException
    sc.addJar("D:\\817\\out\\artifacts\\*****\\*****.jar")确保该路径正确

    连接时从内存找不到需要的class就出现NoClassDefFoundError
  5. classNotFoundException解决方法就是确定该类连同它依赖的包在类路径中;
  6. noClassDefoundError解决方法:确定依赖的包在运行时在正确的classPath中,通过System.getproperty("java.classpath")方法拿到实际存在的运行期classPath,如果不正确,可以通过-classpath命令明确指出正确的classPath。
阅读全文
0 0