【SparkStreaming】java.lang.NoClassDefFoundError: org/apache/spark/streaming/StreamingContext 谁借莪1个温暖的怀抱¢ 2021-07-26 21:08 303阅读 0赞 **【问题描述】** 说一件很神奇的事情,今天在使用SparkStreaming进行Scala编程的时候,发生了如下问题: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/streaming/StreamingContext at com.xzw.sparkstreaming.KafkaToHBase$.main(KafkaToHBase.scala:27) at com.xzw.sparkstreaming.KafkaToHBase.main(KafkaToHBase.scala) Caused by: java.lang.ClassNotFoundException: org.apache.spark.streaming.StreamingContext at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ... 2 more 从报错来看是没有发现那个类,这就奇怪了,代码中明明有这个类,而且还没有任何报错: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dka3l4eTIwMTM_size_16_color_FFFFFF_t_70][] 小编的pom.xml中也导入了相应的依赖: <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_2.11</artifactId> <version>2.4.0-cdh6.3.1</version> <scope>provided</scope> </dependency> **【解决方案】** 问题出现在:<scope>provided</scope>这里,这表示编译和测试时有效,并且该jar包在运行时由服务器提供。所以出错了,解决办法就简单了,直接在pom.xml文件中去掉这一行即可。 在此也列举出附加依赖的集中弄范围,仅供参考: compile:默认值,适用于所有阶段(表明该jar包在编译、运行以及测试中路径俊可见),并且会随着项目直接发布。 provided:编译和测试时有效,并且该jar包在运行时由服务器提供。 runtime:运行时使用,对测试和运行有效。 test:只在测试时使用,在编译和运行时不起作用,发布项目时没有作用。 system:不依赖maven仓库解析,需要提供依赖的显式的置顶jar包路径。对项目的移植来说是不方便的。 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dka3l4eTIwMTM_size_16_color_FFFFFF_t_70]: /images/20210726/348f040583914432b1ef72483b077c3f.png
还没有评论,来说两句吧...