Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala.reflect.internal.MissingRequirementError:在编译器镜像中找不到对象java.lang.object_Scala_Apache Spark_Bigdata - Fatal编程技术网

scala.reflect.internal.MissingRequirementError:在编译器镜像中找不到对象java.lang.object

scala.reflect.internal.MissingRequirementError:在编译器镜像中找不到对象java.lang.object,scala,apache-spark,bigdata,Scala,Apache Spark,Bigdata,我正在尝试使用sbt包构建spark流媒体应用程序,我无法发现导致此错误的原因 这是个错误 scala.reflect.internal.MissingRequirementError:对象 在编译器镜像中找不到java.lang.Object。在 scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:16) 在 scala.reflect.internal.MissingRequ

我正在尝试使用sbt包构建spark流媒体应用程序,我无法发现导致此错误的原因

这是个错误

scala.reflect.internal.MissingRequirementError:对象 在编译器镜像中找不到java.lang.Object。在 scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:16) 在 scala.reflect.internal.MissingRequirementError$.notFound(MissingRequirementError.scala:17) 在 scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:48) 在 scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:40) 在 scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:40)

这是代码

import org.apache.spark.SparkContext
import org.apache.spark._
import org.apache.spark.streaming._
import org.apache.spark.streaming.twitter._
import twitter4j.Status
object TrendingHashTags {
def main(args: Array[String]): Unit = {
val Array(consumerKey, consumerSecret, accessToken, accessTokenSecret,
lang, batchInterval, minThreshold, showCount ) = args.take(8)
val filters = args.takeRight(args.length - 8)
System.setProperty("twitter4j.oauth.consumerKey", consumerKey)
System.setProperty("twitter4j.oauth.consumerSecret", consumerSecret)
System.setProperty("twitter4j.oauth.accessToken", accessToken)
System.setProperty("twitter4j.oauth.accessTokenSecret", accessTokenSecret)
val conf = new SparkConf().setAppName("TrendingHashTags")
val ssc = new StreamingContext(conf, Seconds(batchInterval.toInt))
val tweets = TwitterUtils.createStream(ssc, None, filters)
val tweetsFilteredByLang = tweets.filter{tweet => tweet.getLang() == lang}
val statuses = tweetsFilteredByLang.map{ tweet => tweet.getText()}
val words = statuses.flatMap{status => status.split("""\s+""")}
val hashTags = words.filter{word => word.startsWith("#")}
val hashTagPairs = hashTags.map{hashtag => (hashtag, 1)}
val tagsWithCounts = hashTagPairs.updateStateByKey(
(counts: Seq[Int], prevCount: Option[Int]) =>
prevCount.map{c => c + counts.sum}.orElse{Some(counts.sum)}
)
val topHashTags = tagsWithCounts.filter{ case(t, c) =>
c > minThreshold.toInt
}
val sortedTopHashTags = topHashTags.transform{ rdd =>
rdd.sortBy({case(w, c) => c}, false)
}
sortedTopHashTags.print(showCount.toInt)
ssc.start()
ssc.awaitTermination()
}
}

我解决了这个问题,我发现我使用的Java9与scala版本不兼容,所以我从Java9迁移到Java8

该错误意味着scala是使用与当前版本不同的java版本编译的

我使用的是
maven
而不是
sbt
,但观察到了相同的行为

查找java版本:

> /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    15.0.1, x86_64:     "OpenJDK 15.0.1"        /Users/noname/Library/Java/JavaVirtualMachines/openjdk-15.0.1/Contents/Home
    1.8.0_271, x86_64:  "Java SE 8"     /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
如果您安装了scala,而您的版本是
>1.8
,然后降级了java版本(将$java_HOME编辑为指向
1.8
),则会出现此错误

已检查项目正在使用的scala版本:

$ ls -l /Users/noname/.m2/repository/org/scala-lang/scala-library/2.11.11/scala-library-2.11.11.jar
-rwxrwxrwx  1 noname  staff  0 Nov 17 03:41 /Users/noname/.m2/repository/org/scala-lang/scala-library/2.11.11/scala-library-2.11.11.jar
要纠正此问题,请删除scala jar文件:

$ rm /Users/noname/.m2/repository/org/scala-lang/scala-library/2.11.11/scala-library-2.11.11.jar

现在,再次执行
mvn clean install
,项目就会编译。

我希望在两天内尝试修复pom.xml之前找到这个答案。谢谢你,伙计!未来谷歌的关键词:Maven Scala Java JDK GatlingLink用于更改默认JDK:提示:
sudo更新备选方案--config Java[Tab]
sudo更新备选方案--config javac[Tab]检查~/.bashrc文件是否有
$JAVAHOME
的硬编码值,maven读取$JAVAHOME来决定应该使用哪个版本的java。因此,请确保
$JAVAHOME
值也反映了java版本中发生的更改。