title: Powermock - java.lang.IllegalStateException: Failed to transform class
body: <p><strong>Description:</strong></p>
  
  <p>I am trying to test a static method from a class. I am using powerMock (1.6.2) + mockito (1.10.19) for mocking along with Junit4 (4.12) &amp; java8.</p>
  
  <p><strong>Issue:</strong></p>
  
  <p>Getting the error: "Failed to transform class with name com.gs.ops.domain.StaticClass Reason: java.io.IOException: invalid constant type: 18"</p>
  
  <p><strong>Solutions Tried:</strong></p>
  
  <ol>
  <li><p>Googled threads for issue on with powermock - mockito &amp; java-8</p></li>
  <li><p>Excluded java assist from powermock and added java assist 3.19.0-GA</p></li>
  <li><p>Tried different versions of powermock (1.5.4, 1.6.2...)</p></li>
  </ol>
  
  <p><strong>Below is the exception stack trace:</strong></p>
  
  <pre><code> java.lang.IllegalStateException: Failed to transform class with name com.StaticClass. Reason: java.io.IOException: invalid constant type: 18
          at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:266)
          at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:180)
          at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:68)
          at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
          at java.lang.Class.forName0(Native Method)
          at java.lang.Class.forName(Class.java:340)
          at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:145)
          at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:40)
          at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createTestDelegators(AbstractTestSuiteChunkerImpl.java:244)
          at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.&lt;init&gt;(JUnit4TestSuiteChunkerImpl.java:61)
          at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.&lt;init&gt;(AbstractCommonPowerMockRunner.java:32)
          at org.powermock.modules.junit4.PowerMockRunner.&lt;init&gt;(PowerMockRunner.java:34)
          at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
          at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
          at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
          at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
          at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
          at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
          at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
          at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
          at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
          at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
          at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67)
      Caused by: java.lang.RuntimeException: java.io.IOException: invalid constant type: 18
          at javassist.CtClassType.getClassFile2(CtClassType.java:203)
          at javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:110)
          at javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:96)
          at javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:704)
          at javassist.expr.NewExpr$ProceedForNew.setReturnType(NewExpr.java:243)
          at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:146)
          at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
          at javassist.compiler.TypeChecker.atVariableAssign(TypeChecker.java:248)
          at javassist.compiler.TypeChecker.atAssignExpr(TypeChecker.java:217)
          at javassist.compiler.ast.AssignExpr.accept(AssignExpr.java:38)
          at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:241)
          at javassist.compiler.CodeGen.atStmnt(CodeGen.java:329)
          at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
          at javassist.compiler.CodeGen.atStmnt(CodeGen.java:350)
          at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
          at javassist.compiler.CodeGen.atIfStmnt(CodeGen.java:404)
          at javassist.compiler.CodeGen.atStmnt(CodeGen.java:354)
          at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
          at javassist.compiler.Javac.compileStmnt(Javac.java:568)
          at javassist.expr.NewExpr.replace(NewExpr.java:206)
          at org.powermock.core.transformers.impl.MainMockTransformer$PowerMockExpressionEditor.edit(MainMockTransformer.java:418)
          at javassist.expr.ExprEditor.loopBody(ExprEditor.java:211)
          at javassist.expr.ExprEditor.doit(ExprEditor.java:90)
          at javassist.CtClassType.instrument(CtClassType.java:1374)
          at org.powermock.core.transformers.impl.MainMockTransformer.transform(MainMockTransformer.java:74)
          at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:251)
          ... 24 more
      Caused by: java.io.IOException: invalid constant type: 18
          at javassist.bytecode.ConstPool.readOne(ConstPool.java:1090)
          at javassist.bytecode.ConstPool.read(ConstPool.java:1033)
          at javassist.bytecode.ConstPool.&lt;init&gt;(ConstPool.java:149)
          at javassist.bytecode.ClassFile.read(ClassFile.java:737)
          at javassist.bytecode.ClassFile.&lt;init&gt;(ClassFile.java:108)
          at javassist.CtClassType.getClassFile2(CtClassType.java:190)
          ... 49 more
  </code></pre>
  
  <p><strong>Pom file:</strong>  </p>
  
  <pre><code>&lt;dependency&gt;
              &lt;groupId&gt;org.powermock&lt;/groupId&gt;
              &lt;artifactId&gt;powermock-api-mockito&lt;/artifactId&gt;
              &lt;version&gt;1.6.2&lt;/version&gt;
              &lt;scope&gt;test&lt;/scope&gt;
          &lt;/dependency&gt;
  
          &lt;dependency&gt;
              &lt;groupId&gt;org.powermock&lt;/groupId&gt;
              &lt;artifactId&gt;powermock-module-junit4&lt;/artifactId&gt;
              &lt;version&gt;1.6.2&lt;/version&gt;
              &lt;exclusions&gt;
                  &lt;exclusion&gt;
                      &lt;groupId&gt;org.junit&lt;/groupId&gt;
                      &lt;artifactId&gt;junit&lt;/artifactId&gt;
                  &lt;/exclusion&gt;
                  &lt;exclusion&gt;
                      &lt;groupId&gt;org.powermock&lt;/groupId&gt;
                      &lt;artifactId&gt;powermock-core&lt;/artifactId&gt;
                  &lt;/exclusion&gt;
                  &lt;exclusion&gt;
                      &lt;groupId&gt;org.powermock&lt;/groupId&gt;
                      &lt;artifactId&gt;powermock-reflect&lt;/artifactId&gt;
                  &lt;/exclusion&gt;
              &lt;/exclusions&gt;
              &lt;scope&gt;test&lt;/scope&gt;
          &lt;/dependency&gt;
  
          &lt;dependency&gt;
              &lt;groupId&gt;org.javassist&lt;/groupId&gt;
              &lt;artifactId&gt;javassist&lt;/artifactId&gt;
              &lt;version&gt;3.19.0-GA&lt;/version&gt;
          &lt;/dependency&gt;
  </code></pre>