Scala maven 插件不编译 StackOverflowError

标签 scala maven scala-maven-plugin

我在我的 Maven 项目中发现了一个与 Scala-maven-plugin 相关的错误。我有一个很长的功能序列(用于机器学习目的)我手工编码(74 个元素)。

我在序列中添加了一个元素,但它不再编译。如果我注释这个序列的任何元素,元素的数量会减少并且它会编译。

有关更多信息,这是我编译的最终输出:

[ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.3.1:compile (default) on project SecretProject: wrap: org.apache.commons.exec.ExecuteException: Process exited with an error: 240 (Exit value: 240) -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

加上 StackTrace 的开头:

[INFO] Compiling 13 source files to /home/belka/Bureau/SecretProject/target/classes at 1513759339071
[ERROR] error: java.lang.StackOverflowError
[INFO]  at scala.reflect.internal.TreeInfo.isSelfConstrCall(TreeInfo.scala:296)
[INFO]  at scala.reflect.internal.TreeInfo.isSelfOrSuperConstrCall(TreeInfo.scala:344)
[INFO]  at scala.reflect.internal.Trees$UnderConstructionTransformer$class.transform(Trees.scala:1701)
[INFO]  at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:291)
[INFO]  at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:457)
[INFO]  at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:352)
[INFO]  at scala.reflect.internal.Trees$class.itransform(Trees.scala:1345)

(修改后的项目名称)

  • 有人遇到过与 Scala-maven-plugin 类似的问题吗?
  • Scala-maven-plugin 解析器(在编译器中)是否对序列解析有任何硬性限制?
  • 如何解决它并编译我的项目?
  • 为什么它适用于 IntelliJ 编译(“播放”按钮)但不适用于 Maven 编译?

编辑:

我正在添加包含我的 Scala-maven-plugin 片段的 pom.xml 片段:

      <plugin>
        <!-- see http://davidb.github.com/scala-maven-plugin -->
        <groupId>net.alchim31.maven</groupId>
        <artifactId>scala-maven-plugin</artifactId>
        <version>3.3.1</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>testCompile</goal>
            </goals>
            <configuration>
              <args>
                <arg>-dependencyfile</arg>
                <arg>${project.build.directory}/.scala_dependencies</arg>
              </args>
              <jvmArgs>
                <jvmArg>-Xms512m</jvmArg>
                <jvmArg>-Xmx4096m</jvmArg>
              </jvmArgs>
            </configuration>
          </execution>
        </executions>
      </plugin>

最佳答案

你可以:

  • 反递归你的代码或使用尾递归
  • 或增加用于通过-Xss运行scalac的jvm的最大堆栈大小

          <jvmArgs>
            <jvmArg>-Xss4m</jvmArg>
            <jvmArg>-Xms512m</jvmArg>
            <jvmArg>-Xmx4096m</jvmArg>
          </jvmArgs>
    

我想 IDEA 已经增加了默认的最大堆栈大小(64 位 VM 中的 iirc 1024k)。

关于Scala maven 插件不编译 StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47902117/

相关文章:

Scala 可变选项?

java - spring 3、hibernate 3、maven 和 mysql 的集成

maven - 使用 Maven 从域项目创建 Mule 可部署存档

maven-3 - 编译scala时maven "rerun with -feature"

Scala 2.8.0.RC2 编译器关于模式匹配语句的问题?

java - Scala 检查外部进程 ID (pid) 当前是否正在运行?

scala 将 Array[String] 转换为 case 类

java - 使用 javax.xml 添加新 POJO 时出现 ClassCastException

scala - Maven-shade-plugin是否可以与scala类一起使用?

java - 如何使用 scala-maven-plugin 记录 scaladoc 中的私有(private)元素?