Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NoSuchMethodError when declaring a variable

I'm running into a weird error when using Spark and Scala. I have a piece of code that declares a variable:

var offset = 0

This causes the following exception:

java.lang.NoSuchMethodError: scala.runtime.IntRef.create(I)Lscala/runtime/IntRef;
   at my.package.MyClass$class.myMethod(MyClass.scala:5)
   ...

And it points directly at the variable declaration. I am using Scala 2.11.2. Compiling works. This is a runtime error. I do not get any dependency/version mismatch warnings when running sbt package either.

like image 621
tolgap Avatar asked Jan 13 '15 15:01

tolgap


1 Answers

This is almost certainly a scala version mismatch. Comparing the definition of IntRef in v2.10 and v2.11, you can see that create was only introduced in the latter version (see https://github.com/scala/scala/blob/v2.10.4/src/library/scala/runtime/IntRef.java and https://github.com/scala/scala/blob/v2.11.0/src/library/scala/runtime/IntRef.java). You can bet that some of your dependencies was compiled against a scala version < 2.11.0. You might want to try sbt-dependency-graph (https://github.com/jrudolph/sbt-dependency-graph) to check your transitive dependencies.

like image 59
Régis Jean-Gilles Avatar answered Nov 10 '22 02:11

Régis Jean-Gilles