Intellij IDEA java.lang.NoSuchMethodError: scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object

21,691

Solution 1

I had this issue. Agree with Andrzej, idea uses its own compiler, so you have to disable it somehow. Go to Settings->Scala->Worksheet and uncheck "Run worksheet in the compiler process".

Solution 2

Any answer wasn't usefull in my case. Still i found a solution which worked for me.. It was problem with scalatest version. In pom.xml uprade to

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

helped

Solution 3

So, although the above didn't solve my problem it is related to intellij.

Basically, it was preferring the Scala SDK to resolve the Class::method instead of loading from the dependencies.

I used

-verbose:class

in the JVM switch to have it show me where it was looking; immediately cluing me into it being because it's trying to load the class from the Scala SDK (it would expect it to pull in libs from Maven).

I literally just deleted the Scala SDK from my project settings and the problem went away. So far, my experience with Scala (and definitely in a mixed Java environment) leads me to believe it has a ways to go to mature. This is such a fundamental class/method I can't believe it vanished between versions. The scala version I had installed was 2.11. Apparently what get's pulled in is 2.10.4 from maven.

Anytime you see "NoSuchMethodError" it always means there is a version conflict; it's a question of why.

Solution 4

Like others said here, I was having the same problem due I had some libraries using 2.10 in spite of having scalatest at 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>

Chech that all libraries that you are using are in same Scala version

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

To

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

Having as properties

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

Solution 5

Error java.lang.NoSuchMethodError: scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object

Reason This error is specifically due to version mismatch between spark and scala. I faced the error while I was using spark 2.2.0 and scala 2.10.6. Then I changed to different scala versions but I got no success.

Resolution This error is resolved only when I changed the scala version to 2.11.6 . This version was a perfect match for spark 2.2.0. May be you can try higher versions of scala for the same issue , but I tried for 2.12.x but didnt work.

Suggestion Request you to set the below versions before doing any coding: spark - 2.2.0 scala - 2.11.6

Also I used the below pom :

<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>
Share:
21,691
Dawid Mazuruk
Author by

Dawid Mazuruk

Updated on July 12, 2022

Comments

  • Dawid Mazuruk
    Dawid Mazuruk almost 2 years

    I have a following function:

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

    When I define it and use it from the sbt console everything works just fine. But when I create a worksheet in Intellij IDEA and try to run it then the following exception appears:

    java.lang.NoSuchMethodError: scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object; at week5.A$A26$A$A26.removeLast(lists.sc8362409100671270508.tmp:30) at #worksheet#.#worksheet#(lists.sc8362409100671270508.tmp:33)

    In addition, when I change last line to:

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

    then it works.

    What might the problem be?

  • Dawid Mazuruk
    Dawid Mazuruk over 9 years
    Solution with a map funtion it is not what I was looking for, but thanks anyway.
  • Arjun Guha
    Arjun Guha over 9 years
    Thanks. Worked like a charm. This is the "Scala" under Project Settings. It helps to uncheck as you said under "Project Defaults".
  • PaoloC
    PaoloC over 9 years
    Unchecking that option caused: 1) in the worksheet, the line (on the result tab) which reported "java.lang.NoSuchMethodError..." suddenly disappeared, but still didnt evaluate 2) my Idea to created lots of java.exe and conhost.exe processes, that took 100% cpu and made Idea incredibly slow and un-responsive. Is there any other solution?
  • Miae Kim
    Miae Kim about 6 years
    For intelij 2017, I followed this step File|Other Settings|Default Preferences|Languages & Frameworks| scala|Worksheet
  • Arthur Kalimullin
    Arthur Kalimullin over 5 years
    In my case even deleting it from project settings wasn't enough, I had to went to project .iml file and delete the incorrect scala version manually
  • vks2106
    vks2106 about 4 years
    In general, make sure that you use the same version of scala for dependent libraries. Had the same problem with scalatest.
  • Sheldon Wei
    Sheldon Wei over 2 years
    果然是,竟然版本不能太高,scala这机制