0

I have the following code to compile scala code at runtime in a Java program

    Settings s = new Settings();
    Global g = new Global(s);
    Global.Run run = g.new Run();
    List<String> files = new LinkedList<>();

    files.add("src/main/java/scala/rules/ScalaRuleBasedStrategy.scala");

    run.compile(JavaConverters.asScalaBufferConverter(files)
     .asScala().toList());

But I am getting this error:

Exception in thread "main" java.lang.NoSuchMethodError: scala.tools.nsc.Global$gen$.mkBlock(Lscala/collection/immutable/List;)Lscala/reflect/internal/Trees$Tree; at scala.tools.nsc.ast.parser.TreeBuilder.makeBlock(TreeBuilder.scala:110) at scala.tools.nsc.ast.parser.Parsers$Parser.block(Parsers.scala:1689)

1 Answers1

1

Try

Settings s = new Settings();
MutableSettings.BooleanSetting usejavacp = s.usejavacp(); // added
usejavacp.value_$eq(true); // added
Global g = new Global(s);
Global.Run run = g.new Run();
List<String> files = new LinkedList<>();

files.add("src/main/java/scala/rules/ScalaRuleBasedStrategy.scala");

run.compile(
  JavaConverters.asScalaBufferConverter(files)
    .asScala().toList()
);
Dmytro Mitin
  • 48,194
  • 3
  • 28
  • 66