[英]error of scala and spark version mismatch in Java maven code from IntelliJ
我正在尝试在 Mackbook pro 上从 IntelliJ(社区 2019.2)运行 Java/Scala(maven 项目)。
我的爪哇:
Java 12.0.2 2019-07-16
Java(TM) SE Runtime Environment (build 12.0.2+10)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)
我的代码:
SparkConf conf = new SparkConf().setAppName("test").setMaster("local"); // error !
JavaSparkContext sc = new JavaSparkContext(conf);
我的pom:
<properties>
<scala.version>2.11.12</scala.version>
<scala.binary.version>2.11.12</scala.binary.version>
<java.version>12</java.version>
<maven.javadoc.skip>true</maven.javadoc.skip>
</properties>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-xml</artifactId>
<version>2.11.0-M4</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.4.5</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-scala_2.11</artifactId>
<version>2.4.5</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.0</version>
<scope>compile</scope>
</dependency>
我的 scala 和 spark 都是 2.11,为什么我仍然收到错误:
Exception in thread "main" java.lang.NoSuchMethodError:
scala.Predef$.$conforms()Lscala/Predef$$less$colon$less;
基于
https://stackoverflow.com/questions/43845831/nosuchmethoderror-scala-predef-conformslscala-predeflesscolonless
我不应该有这个版本不匹配?
谢谢
更新我已经安装了基于https://medium.com/w-logs/installing-java-11-on-macos-with-homebrew-7f73c1e9fadf 的java11
但是,我遇到了同样的错误。
/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/bin/java -agentlib:jdwp=transport=dt_socket,address=...
Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.$conforms()Lscala/Predef$$less$colon$less;
谢谢
Java 12 与 Java 13 兼容。Java 13 与 Scala 版本2.13.1
和2.12.9
兼容。 如果可能,最多使用 Java 11(它与 Scala 版本2.13.0, 2.12.4, 2.11.12, 2.10.7
所以你的2.11.12
应该2.11.12
。
尽管如此,Spark 3.0 似乎将支持 JDK9+ SPARK-24417
另外:请在pom.xml
更改scala.binary.version
,它应该是
<scala.binary.version>2.11</scala.binary.version>
代替
<scala.binary.version>2.11.12</scala.binary.version>
通过该更改,您可以在没有显式 Scala 版本的情况下调用依赖项,而不是
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.4.5</version>
<scope>compile</scope>
</dependency>
你可以说
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.binary.version}</artifactId>
<version>2.4.5</version>
<scope>compile</scope>
</dependency>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.