【SparkStreaming】java.lang.NoClassDefFoundError: org/apache/spark/streaming/StreamingContext

【问题描述】

       说一件很神奇的事情,今天在使用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

       从报错来看是没有发现那个类,这就奇怪了,代码中明明有这个类,而且还没有任何报错:

       小编的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包路径。对项目的移植来说是不方便的。

 

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

象在舞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值