Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failure parsing .po files in SBT #12

Open
gawashburn opened this issue Jan 6, 2020 · 5 comments
Open

Failure parsing .po files in SBT #12

gawashburn opened this issue Jan 6, 2020 · 5 comments

Comments

@gawashburn
Copy link

[error] Caused by: java.lang.NoSuchMethodError: java_cup.runtime.SymbolFactory.newSymbol(Ljava/lang/String;ILjava_cup/runtime/Symbol;Ljava/lang/Object;)Ljava_cup/runtime/Symbol;
[error] 	at ru.makkarpov.scalingua.pofile.parse.PoParser$CUP$PoParser$actions.CUP$PoParser$do_action_part00000000(PoParser.java:427)
[error] 	at ru.makkarpov.scalingua.pofile.parse.PoParser$CUP$PoParser$actions.CUP$PoParser$do_action(PoParser.java:479)
[error] 	at ru.makkarpov.scalingua.pofile.parse.PoParser.do_action(PoParser.java:125)
[error] 	at java_cup.runtime.lr_parser.parse(lr_parser.java:699)
[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)
...

I'm using sbt version 1.1.4 with

addSbtPlugin("ru.makkarpov" % "scalingua-sbt" % "0.8.1")

in my plugins.sbt. And

.enablePlugins(Scalingua)
.settings(
...
  libraryDependencies += "ru.makkarpov" %% "scalingua" % "0.8.1",
...
)

in my build.sbt

@makkarpov
Copy link
Owner

Hi!

Maybe other version of CUP is loaded at the runtime. What SBT version do you use and are there any other plugins loaded?

@gawashburn
Copy link
Author

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?

@makkarpov
Copy link
Owner

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.

@gawashburn
Copy link
Author

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)

@gawashburn
Copy link
Author

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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants