Could not write class xxx because it exceeds JVM code size limits...too large

记录工作中遇到的一个问题:Could not write class xxx because it exceeds JVM code size limits...too large

  • 问题描述
  • 开发环境
  • 报错原因
  • 解决方法
  • 参考文献

问题描述

自己写了一个很普通的sparksql代码,把所有的代码都写到了main方法中,但由于业务需求,建了一个特别大的宽表。。。balabala,总之就是main方法很多行

写完后使用maven打包,报错Could not write class xxx because it exceeds JVM code size limits…too large

开发环境

  • 操作系统: macOS
  • 开发工具: IntelliJ IDEA 社区版2019.2
  • 开发语言: scala
  • 机器内存: 16G

报错原因

在Java或Scala中一个方法最大为64KB, 若方法body很大,导致编译失败

解决方法

方法拆分即可, 保证每个方法体size不超过64KB

参考文献

stack overflow上的一个解释

你可能感兴趣的:(java,spark,scala,java,maven,jvm)