有一个带有构建器的对象(从avro模式生成的java对象)。该对象具有平面结构,包含约200个场。
代码如下:
Object.newBuilder()
.setField1()
.setField2()
...
.setField200()
Idea中的scala编译器可以毫无问题地进行编译。当我尝试运行Maven构建-失败并出现编译问题:StackOverflow
[ERROR] error: java.lang.StackOverflowError
[INFO] at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:666)
[INFO] at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5303)
[INFO] at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5330)
[INFO] at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5277)
[INFO] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5281)
[INFO] at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5379)
[INFO] at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5387)
[INFO] at scala.tools.nsc.transform.Erasure$Eraser.adaptMember(Erasure.scala:612)
[INFO] at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:666)
[INFO] at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5303)
Scala版本:2.11
Scala Maven插件:3.3.1
作为一种解决方法,我将设置方法分为几组(每个链中有100个 setter )
val builder = Object.newBuilder()
builder.setField1()
.setField2()
...
.setField100()
builder.setField101()
...
.setField200()
那设法在我的本地机器上编译,但是在Jenkins服务器上编译失败。在将 setter 分成较小的组(每组30个 setter )之后,代码也在Jenkins服务器上编译。
是否有任何参数可以在Scala编译器中配置该行为?
最佳答案
我曾经遇到过同样的问题,我通过将堆栈大小从默认的1MB增加到10MB来解决了这个问题。希望对您有所帮助!
关于java - Scala : compilation error due to huge number of methods in chain,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61673759/