Open gawashburn opened 4 years ago
Hi!
Maybe other version of CUP is loaded at the runtime. What SBT version do you use and are there any other plugins loaded?
I'm using sbt 1.1.4
My other plugins are:
// Better Maven/Ivy dependency resolution
addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.3")
// Allow combining multiple jars
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.9")
// Protobuf generation support
addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.15")
libraryDependencies += "com.thesamet.scalapb" %% "compilerplugin" % "0.7.0"
// JFlex
libraryDependencies += "de.jflex" % "jflex" % "1.7.0" % "compile"
Only possible conflict here I can see might be JFlex?
Yes, that can be a possible source of conflict.
The correct solution for this is to shade CUP dependency, as it is done in 'scalingua-shaded' artifact that was added after similar runtime conflicts in compiled code. No such conflicts have been occurred so far in SBT itself.
Technically it should be possible to apply similar technique to SBT artifact. I will look into it few days later.
If I change my version of JFlex to 1.6.1 it still fails, but with a different exception:
[error] Caused by: java.lang.NoSuchMethodError: java_cup.runtime.ComplexSymbolFactory$Location.<init>(Ljava/lang/String;III)V
[error] at ru.makkarpov.scalingua.pofile.parse.PoLexer.loc(PoLexer.java:274)
[error] at ru.makkarpov.scalingua.pofile.parse.PoLexer.storeLoc(PoLexer.java:278)
[error] at ru.makkarpov.scalingua.pofile.parse.PoLexer.next_token(PoLexer.java:754)
[error] at java_cup.runtime.lr_parser.scan(lr_parser.java:349)
[error] at java_cup.runtime.lr_parser.parse(lr_parser.java:549)
[error] at ru.makkarpov.scalingua.pofile.PoFile$.apply(PoFile.scala:52)
[error] at ru.makkarpov.scalingua.pofile.PoFile$.apply(PoFile.scala:48)
[error] at ru.makkarpov.scalingua.plugin.PoCompiler$.$anonfun$doCompiling$1(PoCompiler.scala:145)
[error] at ru.makkarpov.scalingua.plugin.PoCompiler$.catchErrors(PoCompiler.scala:69)
[error] at ru.makkarpov.scalingua.plugin.PoCompiler$.doCompiling(PoCompiler.scala:144)
[error] at ru.makkarpov.scalingua.plugin.Scalingua$.$anonfun$compileLocalesTask$1(Scalingua.scala:188)
[error] at ru.makkarpov.scalingua.plugin.Scalingua$.$anonfun$compileLocalesTask$1$adapted(Scalingua.scala:188)
[error] at ru.makkarpov.scalingua.plugin.Scalingua$.$anonfun$withGenContext$3(Scalingua.scala:157)
[error] at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:59)
[error] at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:52)
[error] at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
[error] at ru.makkarpov.scalingua.plugin.Scalingua$.$anonfun$withGenContext$1(Scalingua.scala:151)
Completely commenting out my own use of JFlex rather than just changing the version seems to resolve the issue, so that definitely seems to be it. However, I cannot build other portions of my project without it.
Thanks for the quick response on this!
I'm using sbt version 1.1.4 with
in my plugins.sbt. And
in my build.sbt