ошибка scala и несоответствие версии искры в Java коде maven от IntelliJ - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь запустить Java / Scala (проект maven) из IntelliJ (сообщество 2019.2) на Mackbook pro.

Мой java:

  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 и искра - все 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

У меня не должно быть этой версии несоответствие?

спасибо

ОБНОВЛЕНИЕ Я установил java11 на основе https://medium.com/w-logs/installing-java-11-on-macos-with-homebrew-7f73c1e9fadf

, но я получил ту же ошибку.

 /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;

спасибо

1 Ответ

0 голосов
/ 02 апреля 2020

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.

Тем не менее, похоже, что Spark 3.0 будет поддерживать JDK9 + SPARK-24417


Также: пожалуйста, измените scala.binary.version в вашем pom.xml, оно должно быть

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...