Java maven软件包的StackOverflower错误

Java maven软件包的StackOverflower错误,java,scala,maven,Java,Scala,Maven,我有一个Scala类,它包含一个有1000个左右条件的方法。没有简单的模式可以用来组合这些条件,所有的条件在本质上都是非常不同的 val a = "some string" if(a.contains("xx")){ "aa_xx" } else if(a.contains("yy")){ "121_Some random string"

我有一个Scala类,它包含一个有1000个左右条件的方法。没有简单的模式可以用来组合这些条件,所有的条件在本质上都是非常不同的

    val a = "some string"
    if(a.contains("xx")){
      "aa_xx"
    }
    else if(a.contains("yy")){
      "121_Some random string"
    }
... and so on about 1000's conditions
当尝试使用maven构建jar时,我得到了一个StackOverflower错误。 尝试为maven使用自定义xmx值进行构建,但仍然看到相同的错误

[ERROR] error: java.lang.StackOverflowError
[INFO]  at scala.reflect.internal.Types$$anonfun$47.apply(Types.scala:4579)
[INFO]  at scala.reflect.internal.Types$$anonfun$47.apply(Types.scala:4579)
[INFO]  at scala.reflect.internal.tpe.TypeComparers$class.isSubType1(TypeComparers.scala:319)
[INFO]  at scala.reflect.internal.tpe.TypeComparers$class.isSubType(TypeComparers.scala:278)
[INFO]  at scala.reflect.internal.SymbolTable.isSubType(SymbolTable.scala:16)
[INFO]  at scala.reflect.internal.tpe.TypeComparers$class.retry$3(TypeComparers.scala:520)
[INFO]  at scala.reflect.internal.tpe.TypeComparers$class.fourthTry$1(TypeComparers.scala:547)
[INFO]  at scala.reflect.internal.tpe.TypeComparers$class.classOnRight$1(TypeComparers.scala:460)
[INFO]  at scala.reflect.internal.tpe.TypeComparers$class.thirdTryRef$1(TypeComparers.scala:464)
[INFO]  at scala.reflect.internal.tpe.TypeComparers$class.thirdTry$1(TypeComparers.scala:478)
[INFO]  at scala.reflect.internal.tpe.TypeComparers$class.secondTry$1(TypeComparers.scala:450)
[INFO]  at scala.reflect.internal.tpe.TypeComparers$class.firstTry$1(TypeComparers.scala:411)
[INFO]  at scala.reflect.internal.tpe.TypeComparers$class.isSubType2(TypeComparers.scala:552)
[INFO]  at scala.reflect.internal.tpe.TypeComparers$class.isSubType1(TypeComparers.scala:320)
[INFO]  at scala.reflect.internal.tpe.TypeComparers$class.isSubType(TypeComparers.scala:278)

关于如何修复它有什么建议吗?

看来,增加scala maven插件的Xss参数解决了这个问题

   <jvmArgs>
        <jvmArg>-Xss4m</jvmArg>
      </jvmArgs>
不要使用1000个else if语句。使用循环

//Java示例 最终字符串[]子字符串={xx,yy}; 对于字符串子字符串:子字符串{ 如果a.containssub{ aa_u2;+接头 打破 } }
您是否尝试使用-Xss增加堆栈大小?@HaraldGliebe我在哪里可以配置它?MAVEN_OPTS=-Xss10m mvn package如果您的源代码重复性足以使编译器崩溃,那么可能会改进您的代码。我不能正确地相信这段代码不能以更理智的方式编写。谁会认真地维护一个包含数千个这些检查的文件,这些检查应该是一个简单的映射?我只是为了一个示例目的发布了一些其他逻辑条件,其中包含许多and以及OR检查,而一些没有,并且不可能使用map,因此剩下的选择是许多if else,这是一种数据聚合逻辑来自其他资源。