scalaxb生成的代码在编译过程中导致堆栈溢出。

3
我正在使用scalaxb根据XSD生成Scala代码。(具体来说,我正在使用maven scalaxb插件。) 代码生成阶段顺利完成,并且就目测而言,生成的Scala文件看起来不错。但是当我尝试进行编译时,出现了堆栈溢出错误:
[ERROR] error: java.lang.StackOverflowError
[INFO]  at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:754)
[INFO]  at scala.tools.nsc.matching.MatrixAdditions$MatchMatrixOptimizer$lxtt$2$.transform(MatrixAdditions.scala:113)
[INFO]  at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:845)
[INFO]  at scala.tools.nsc.matching.MatrixAdditions$MatchMatrixOptimizer$lxtt$2$.transform(MatrixAdditions.scala:113)
[INFO]  at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:837)
[INFO]  at scala.tools.nsc.matching.MatrixAdditions$MatchMatrixOptimizer$lxtt$2$.transform(MatrixAdditions.scala:113)
[INFO]  at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:821)
[INFO]  at scala.tools.nsc.matching.MatrixAdditions$MatchMatrixOptimizer$lxtt$2$.transform(MatrixAdditions.scala:113)
[INFO]  at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:821)
[INFO]  at scala.tools.nsc.matching.MatrixAdditions$MatchMatrixOptimizer$lxtt$2$.transform(MatrixAdditions.scala:113)
[INFO]  at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:821)
[INFO]  at scala.tools.nsc.matching.MatrixAdditions$MatchMatrixOptimizer$lxtt$2$.transform(MatrixAdditions.scala:113)

...

[INFO]  at scala.collection.mutable.ListBuffer$$anon$1.foreach(ListBuffer.scala:311)
[INFO]  at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:294)
[INFO]  at scala.tools.nsc.transform.ExplicitOuter$Phase.run(ExplicitOuter.scala:539)
[INFO]  at scala.tools.nsc.Global$Run.compileSources(Global.scala:949)
[INFO]  at scala.tools.nsc.Global$Run.compile(Global.scala:1034)
[INFO]  at scala.tools.nsc.Main$.process(Main.scala:106)
[INFO]  at scala.tools.nsc.Main$.main(Main.scala:123)
[INFO]  at scala.tools.nsc.Main.main(Main.scala)
[INFO]  ... 6 more
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------

我使用的xsd已经进行了测试,可以与jaxb配合使用。

Scala版本为2.9.0-1,scalaxb版本为0.6.2。


这应该向scalaxb项目或Scala报告。没有足够的信息来回答这个普遍有用的问题。 - Eugene Yokota
1
嗨,尤金——实际上并没有问题。编译器只需要为我特定的xsd生成的代码提供大量的堆栈空间。"<jvmArg>-Xss2048k</jvmArg>"解决了我的问题。我会回答自己的问题或将其标记为scalaxb,但StackOverflow告诉我我没有足够的声望来执行任何一项操作。 - Jim
我已将您的答案发布为社区维基。 - Eugene Yokota
2个回答

5

根据原帖,问题是通过在 jvmArg 中添加 -Xss2048k 解决的。


0

在处理sbt和复杂xsd的情况下,我需要在sbt compile期间通过使用以下命令来增加堆栈大小为4M:

sbt -J-Xss4M compile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接