Issue
You may encounter the following exception during the maven build of gwt project: Compiling 1 permutation
Compiling permutation 0...
[ERROR] OutOfMemoryError: Increase heap size or lower gwt.jjs.maxThreads
java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap.resize(HashMap.java:462)
at java.util.HashMap.addEntry(HashMap.java:755)
at java.util.HashMap.put(HashMap.java:385)
at java.util.HashSet.add(HashSet.java:200)
at com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer$RescueVisitor.rescue(ControlFlowAnalyzer.java:639)
at com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer$RescueVisitor.visit(ControlFlowAnalyzer.java:438)
at com.google.gwt.dev.jjs.ast.JParameterRef.traverse(JParameterRef.java:45)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:144)
at com.google.gwt.dev.jjs.ast.JVisitor.acceptImmutable(JVisitor.java:152)
at com.google.gwt.dev.jjs.ast.JMethodCall.visitChildren(JMethodCall.java:250)
at com.google.gwt.dev.jjs.ast.JNewInstance.traverse(JNewInstance.java:84)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:125)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:120)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:116)
at com.google.gwt.dev.jjs.ast.JMethodCall.visitChildren(JMethodCall.java:248)
at com.google.gwt.dev.jjs.ast.JMethodCall.traverse(JMethodCall.java:241)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:125)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:120)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:116)
at com.google.gwt.dev.jjs.ast.JRunAsync.traverseOnSuccess(JRunAsync.java:101)
at com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer.traverseFromRunAsync(ControlFlowAnalyzer.java:1008)
at com.google.gwt.dev.jjs.impl.CodeSplitter.computeAllButOneCfas(CodeSplitter.java:716)
at com.google.gwt.dev.jjs.impl.CodeSplitter.mapExclusiveAtoms(CodeSplitter.java:976)
at com.google.gwt.dev.jjs.impl.CodeSplitter.determineExclusivity(CodeSplitter.java:757)
at com.google.gwt.dev.jjs.impl.CodeSplitter.execImpl(CodeSplitter.java:804)
at com.google.gwt.dev.jjs.impl.CodeSplitter.exec(CodeSplitter.java:259)
at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.compilePermutation(JavaToJavaScriptCompiler.java:401)
at com.google.gwt.dev.jjs.UnifiedAst.compilePermutation(UnifiedAst.java:134)
at com.google.gwt.dev.CompilePerms.compile(CompilePerms.java:195)
at com.google.gwt.dev.ThreadedPermutationWorkerFactory$ThreadedPermutationWorker.compile(ThreadedPermutationWorkerFactory.java:49)
at com.google.gwt.dev.PermutationWorkerFactory$Manager$WorkerThread.run(PermutationWorkerFactory.java:73)
at java.lang.Thread.run(Thread.java:662)
[ERROR] Out of memory; to increase the amount of memory, use the -Xmx flag at startup (java -Xmx128M ...)
[ERROR] Unrecoverable exception, shutting down
com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries)
at com.google.gwt.dev.ThreadedPermutationWorkerFactory$ThreadedPermutationWorker.compile(ThreadedPermutationWorkerFactory.java:56)
at com.google.gwt.dev.PermutationWorkerFactory$Manager$WorkerThread.run(PermutationWorkerFactory.java:73)
at java.lang.Thread.run(Thread.java:662)
[ERROR] Not all permutation were compiled , completed (0/1)
Solution 1
To resolve this exception, you can setting, increasing memory values, the "MAVEN_OPTS" as environment variable and retry the maven build. MAVEN_OPTS="-Xmx2048m -XX:MaxPermSize=1024m"
Solution 2
Add "extraJvmArgs" tag under configuration tag for gwt-maven-plugin as shown in the next example:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>${gwtVersion}</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-dev</artifactId>
<version>${gwtVersion}</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
<version>${gwtVersion}</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
.....
<extraJvmArgs>-Xmx896M -Xms896m -XX:PermSize=64m -XX:MaxPermSize=128m</extraJvmArgs>
.....
</configuration>
</plugin>
Technology stack
I used these solutions using:- java 1.6
- gwt 2.5.1
- maven 3.2.1