sbt assemblyPackageDependency 打包出错 java.lang.OutOfMemoryError:

sbt assemblyPackage依赖打包出错java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError:Java Stack space

我的运行环境

win 7 64位。
IDEA

出错信息

java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space  
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)  
    at java.util.concurrent.FutureTask.get(FutureTask.java:83)  
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)  
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:785)  
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)  
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)  
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)  
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)  
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)  
    at java.lang.Thread.run(Thread.java:619)  
Caused by: java.lang.OutOfMemoryError: Java heap space  
    at java.io.BufferedInputStream.<init>(BufferedInputStream.java:178)  
    at org.apache.tomcat.util.bcel.classfile.ClassParser.<init>(ClassParser.java:77)  
    at org.apache.catalina.startup.ContextConfig.populateJavaClassCache(ContextConfig.java:2193)  
    at org.apache.catalina.startup.ContextConfig.populateJavaClassCache(ContextConfig.java:2178)  
    at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2115)  
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2068)  
    at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1942)  
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1908)  
    at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1893)  
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1296)  
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:855)  
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:346)  
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)  
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)  
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173)  
    ... 8 more  

解决方法

使用IDEA 自带SBT

修改参数:
打开对话框:
 File -> Other settings ->Default settings -> Build,Execution,Deployment -> Build Tools -> SBT

修改JVM Options选项:
-Xmx2048M
-XX:MaxPermSize=512m
-XX:ReservedCodeCacheSize=1024m (主要是这个,因为要重新编译,打出的包都有400M,所以要大于500M才行)

使用自已安装的sbt

-XX:+UseConcMarkSweepGC
-XX:+CMSClassUnloadingEnabled
-XX:PermSize=2048M
-Xms2048m
-XX:MaxNewSize=1024m

-Xmx2048M

-XX:MaxPermSize=4096m

-XX:ReservedCodeCacheSize=1024m   这个参数是比较重要的不能小于500M
但是,为什么会出现这个问题呢?以及配置中的选项都是什么含义?

打包

参考:
Idea 编写 Spark 示例代码并打包成Jar:http://blog.csdn.net/dai451954706/article/details/42589771

注意:默认是把所有的核心内容和依赖打成一个包。
可以分开,在project structure对话框中的artifacts选项中区别

核心内容:  ‘工程名’compile output
依赖:    Extracted ‘包名’

默认这两是在一起的,’工程名’compile output 一般在最后一行。

猜你喜欢

转载自blog.csdn.net/liuzhuchen/article/details/79436464
sbt