Skip to content

IllegalAccessError: tried to access class io.vavr.Lambda from class Main$ #2337

Closed
@2m

Description

@2m

When using vavr 0.9.3 with Scala 2.12.7 I am getting the following exception:

java.lang.BootstrapMethodError: java.lang.IllegalAccessError: tried to access class io.vavr.Lambda from class Main$
        at Main$.main(Main.scala:3)
        at Main.main(Main.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at scala.reflect.internal.util.ScalaClassLoader.$anonfun$run$2(ScalaClassLoader.scala:99)
        at scala.reflect.internal.util.ScalaClassLoader.asContext(ScalaClassLoader.scala:34)
        at scala.reflect.internal.util.ScalaClassLoader.asContext$(ScalaClassLoader.scala:30)
        at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.asContext(ScalaClassLoader.scala:125)
        at scala.reflect.internal.util.ScalaClassLoader.run(ScalaClassLoader.scala:99)
        at scala.reflect.internal.util.ScalaClassLoader.run$(ScalaClassLoader.scala:91)
        at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:125)
        at scala.tools.nsc.CommonRunner.run(ObjectRunner.scala:22)
        at scala.tools.nsc.CommonRunner.run$(ObjectRunner.scala:21)
        at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:39)
        at scala.tools.nsc.CommonRunner.runAndCatch(ObjectRunner.scala:29)
        at scala.tools.nsc.CommonRunner.runAndCatch$(ObjectRunner.scala:28)
        at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:39)
        at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:66)
        at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:85)
        at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:96)
        at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:101)
        at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)

When trying to run the following code:

object Main {
  def main(args: Array[String]): Unit = {
    println(io.vavr.Function1.of(math.abs))
  }
}

I compile and run the code with the following commands:

scalac -d out -classpath (coursier fetch io.vavr:vavr:0.9.3 | paste -s -d:) Main.scala
scala -d out -classpath out:(coursier fetch io.vavr:vavr:0.9.3 | paste -s -d:) Main

The compiled class according to javap looks like:

vavr-interop ─╼ javap -c out/Main\$.class                                                                                                                                                             0
Compiled from "Main.scala"
public final class Main$ {
  public static Main$ MODULE$;

  public static {};
    Code:
       0: new           #2                  // class Main$
       3: invokespecial #17                 // Method "<init>":()V
       6: return

  public void main(java.lang.String[]);
    Code:
       0: getstatic     #25                 // Field scala/Predef$.MODULE$:Lscala/Predef$;
       3: invokedynamic #49,  0             // InvokeDynamic #0:apply:()Lio/vavr/Function1;
       8: invokestatic  #55                 // InterfaceMethod io/vavr/Function1.of:(Lio/vavr/Function1;)Lio/vavr/Function1;
      11: invokevirtual #59                 // Method scala/Predef$.println:(Ljava/lang/Object;)V
      14: return

  public static final int $anonfun$main$1(int);
    Code:
       0: getstatic     #69                 // Field scala/math/package$.MODULE$:Lscala/math/package$;
       3: iload_0
       4: invokevirtual #72                 // Method scala/math/package$.abs:(I)I
       7: ireturn

  public static final java.lang.Object $anonfun$main$1$adapted(java.lang.Object);
    Code:
       0: aload_0
       1: invokestatic  #82                 // Method scala/runtime/BoxesRunTime.unboxToInt:(Ljava/lang/Object;)I
       4: invokestatic  #84                 // Method $anonfun$main$1:(I)I
       7: invokestatic  #88                 // Method scala/runtime/BoxesRunTime.boxToInteger:(I)Ljava/lang/Integer;
      10: areturn
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions