web-dev-qa-db-fra.com

Intellij IDEA Java.lang.NoSuchMethodError: scala.collection.immutable.

J'ai une fonction suivante:

def removeLast(list: List[Int]): List[Int] = list match {
  case List() => List()
  case List(x) => List()
  case x :: xs => x :: removeLast(xs)
}

Lorsque je le définit et que je l'utilise depuis la console sbt, tout fonctionne correctement . Mais lorsque je crée une feuille de calcul dans Intellij IDEA et que je tente de l'exécuter, l'exception suivante apparaît:

Java.lang.NoSuchMethodError: scala.collection.immutable. $ Colon $ colon.hd $ 1 () Ljava/lang/Object; à la semaine5.A $ A26 $ A26.RemoveLast (lists.sc8362409100671270508.tmp: 30) à # feuille de travail #. # feuille de travail # (lists.sc8362409100671270508.tmp: 33)

De plus, quand je change la dernière ligne en:

case x :: xs => 1 :: removeLast(xs)}

alors ça marche.

Quel pourrait être le problème?

16
Dawid Mazuruk

J'ai eu ce problème. En accord avec Andrzej, idée utilise son propre compilateur, vous devez donc le désactiver en quelque sorte ... Allez dans Paramètres -> Scala-> Feuille de travail et décochez "Exécuter la feuille de calcul dans le processus de compilation" .

27
Tomek Kozlowski

Toute réponse n'a pas été utile dans mon cas. Pourtant, j'ai trouvé une solution qui fonctionnait pour moi ... C'était un problème avec la version scalatest. Dans pom.xml uprade à 

  <dependency>
        <groupId>org.scalatest</groupId>
        <artifactId>scalatest_2.11</artifactId>
         <version>2.2.4</version>
         <scope>test</scope>
  </dependency>

aidé

5
viniolli

Donc, bien que ce qui précède n'ait pas résolu mon problème, il est lié à intellij. 

Fondamentalement, il préférait le SDK Scala pour résoudre la méthode Class :: au lieu de charger à partir des dépendances. 

J'ai utilisé 

-verbose: classe

dans le commutateur JVM pour qu'il me montre où il cherchait; je me suis immédiatement laissé convaincre parce qu’il essayait de charger la classe à partir du SDK Scala (il s’attendrait à ce qu’elle retire les bibliothèques de Maven). 

J'ai littéralement juste supprimésupprimé le SDK Scala des paramètres de mon projetet le problème a disparu. Jusqu'ici, mon expérience avec Scala (et certainement dans un environnement Java mixte) m'amène à penser que nous avons des moyens de mûrir. C’est une méthode/méthode tellement fondamentale que je ne peux pas croire qu’elle ait disparu entre les versions. La version scala que j'avais installée était la 2.11. Apparemment, 2.10.4 de Maven est retenu. 

Chaque fois que vous voyez "NoSuchMethodError" il toujours signifie qu'il existe un conflit de version; c'est une question de pourquoi.

5

Comme d'autres l'ont dit ici, j'avais le même problème car certaines bibliothèques utilisaient la version 2.10 malgré le scalatest à la version 2.11.

<!-- http://www.scalactic.org/ -->
<dependency>
    <groupId>org.scalactic</groupId>
    <artifactId>scalactic_2.11</artifactId>
    <version>${scalactic.version}</version>
    <scope>test</scope>
</dependency>

<!-- http://www.scalatest.org/ -->
<dependency>
    <groupId>org.scalatest</groupId>
    <artifactId>scalatest_2.11</artifactId>
    <version>${scalactic.version}</version>
    <scope>test</scope>
</dependency>

Vérifiez que toutes les bibliothèques que vous utilisez ont la même version de Scala

<dependency>
    <groupId>org.Apache.spark</groupId>
    <artifactId>spark-core_2.10</artifactId>
    <version>${spark.version}</version>
    <scope>provided</scope>
</dependency>

À

<dependency>
    <groupId>org.Apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>${spark.version}</version>
    <scope>provided</scope>
</dependency>

Ayant comme propriétés

<properties>
    <scala.tools.version>2.11.8</scala.tools.version>
    <scala.version>2.11.8</scala.version>
    <scalactic.version>3.0.0</scalactic.version>

    <!-- Library Versions -->
    <spark.version>2.0.0</spark.version>
    ....
</properties>
2
Franzi

Je viens de rencontrer le même problème. Il s'est avéré que j'avais téléchargé la mauvaise version d'Akka, qui incluait scala-library-2.10.x, alors que mon projet utilisait 2.11.6. La saisie de la dernière version d'Akka, qui inclut 2.11.5, a résolu le problème.

Donc, il semble que ce soit un problème de compatibilité, donc je vérifierais les dépendances dans le futur.

1
Roberto

Erreur Java.lang.NoSuchMethodError: scala.collection.immutable. $ Colon $ colon.hd $ 1 () Ljava/lang/Object

Raison Cette erreur est spécifiquement due à une non concordance de version entre spark et scala. J'ai fait face à l'erreur alors que j'utilisais spark 2.2.0 et scala 2.10.6. Ensuite, j'ai changé pour différentes versions de Scala, mais sans succès.

Résolution Cette erreur n’est résolue que lorsque j’ai modifié la version de scala en 2.11.6. Cette version était un match parfait pour spark 2.2.0. Peut-être que vous pouvez essayer des versions plus récentes de Scala pour le même problème, mais j’ai essayé pour 2.12.x mais cela n’a pas fonctionné.

Suggestion Vous demander de définir les versions ci-dessous avant de procéder à tout codage: Spark - 2.2.0 Scala - 2.11.6

Aussi j'ai utilisé le pom ci-dessous:

<dependencies>
    <dependency>
        <groupId>org.Apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.Apache.spark</groupId>
        <artifactId>spark-streaming_2.11</artifactId>
        <version>2.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.Apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.2.0</version>
    </dependency>
</dependencies>
1
Aakash Agrawal

J'ai le même problème. Lorsque vous le changez pour utiliser la fonction map, cela fonctionne! Je ne sais pas pourquoi mais c'est comment le réparer.

0
M.Rez

J'ai trouvé que cela peut être causé par différentes versions de scalatest et scalamock. Le Maven suivant

<dependency>
        <groupId>org.scalatest</groupId>
        <artifactId>scalatest_2.11</artifactId><!-- this was previously 2.10 -->
        <version>2.2.4</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.scalamock</groupId>
        <artifactId>scalamock-scalatest-support_2.11</artifactId>
        <version>3.2</version>
        <scope>test</scope>
    </dependency>
0
Andrew Long

J'ai eu la même chose en ajoutant json4. j'ai résolu le problème en remplaçant artifactId de json4s-native_2.12 par - json4s-native_2.11. Je suppose que cela est lié à la version de Scala que vous utilisez, la mienne était 2.11 et non 2.12 (vous pouvez voir le vôtre dans le noeud properties xml du fichier pom.xml, mine est: <scala.version>2.11</scala.version>.)

0
Ohad Bitton