title: Exception in thread "main" java.lang.IllegalStateException: Failed to transform class with name
body: <p>I am using JAVA 1.8 with the Javaassist version as 3.24.0 and power mock 1.7.4. I am facing this issue when I am including a class in @PrepareForTest.Here the MainClass class depends on serverCommunicator.class instance.</p>
  <pre><code> public class MainClass
      {
      public void sendInitRequest()
         {
            ServerCommunicator communicator = ServerCommunicator.getInstance();
            communicator.init();
         }
      }
  
  public class ServerCommunicator
  {
  private static communicator ;
  public static ServerCommunicator getInstance()
  {
     return communicator;
  }
  public void init()
  {
  System.out.println(&quot;Communication has initialized &quot;);
  }
  }
  </code></pre>
  <p>Test case for the above method I have written like this:</p>
  <pre><code>@PowerMockIgnore(&quot;javax.management.*&quot;)
                  @RunWith(PowerMockRunner.class)
                  @PrepareForTest({ ServerCommunicator.class }
   @Test
     public void testSendInitRequest() throws NullPointerException
     {
        try
        {
           MainClass mainClass = new MainClass();
              final ServerCommunicator communicator = PowerMockito.mock(new ServerCommunicator());
           PowerMockito.mockStatic(ServerCommunicator.class);
           when(ServerCommunicator.getInstance()).thenReturn(communicator);
           PowerMockito.doNothing().when(communicator).init();
           mainClass.sendInitRequest();
           assertTrue(true);
        }
        catch (Throwable t)
        {
  
           assertTrue(1 == 0);
        }
     }
  </code></pre>
  <p>So when I am adding the serverCommunicator.class in @PrepareForTest it is showing the below error.Exception in thread &quot;main&quot; java.lang.IllegalStateException: Failed to transform class with name ServerCommunicator. Reason: null</p>
  <pre><code>FAILED CONFIGURATION: @BeforeClass beforePowerMockTestClass
  java.lang.NullPointerException
      at javassist.bytecode.stackmap.Tracer.checkParamTypes(Tracer.java:899)
      at javassist.bytecode.stackmap.Tracer.doInvokeMethod(Tracer.java:798)
      at javassist.bytecode.stackmap.Tracer.doOpcode148_201(Tracer.java:592)
      at javassist.bytecode.stackmap.Tracer.doOpcode(Tracer.java:78)
      at javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:195)
      at javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:207)
      at javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:207)
      at javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:207)
      at javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:172)
      at javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:116)
      at javassist.bytecode.MethodInfo.rebuildStackMap(MethodInfo.java:458)
      at javassist.bytecode.MethodInfo.rebuildStackMapIf6(MethodInfo.java:440)
      at javassist.expr.ExprEditor.doit(ExprEditor.java:118)
      at javassist.CtClassType.instrument(CtClassType.java:1541)
      at org.powermock.core.transformers.javassist.InstrumentMockTransformer.transform(InstrumentMockTransformer.java:41)
      at org.powermock.core.transformers.javassist.AbstractJavaAssistMockTransformer.transform(AbstractJavaAssistMockTransformer.java:40)
      at org.powermock.core.transformers.support.DefaultMockTransformerChain.transform(DefaultMockTransformerChain.java:43)
      at org.powermock.core.classloader.MockClassLoader.transformClass(MockClassLoader.java:184)
      at org.powermock.core.classloader.javassist.JavassistMockClassLoader.defineAndTransformClass(JavassistMockClassLoader.java:102)
      at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:174)
      at org.powermock.core.classloader.MockClassLoader.loadClassByThisClassLoader(MockClassLoader.java:102)
      at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass1(DeferSupportingClassLoader.java:147)
      at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:98)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at java.lang.Class.forName0(Native Method)
      at java.lang.Class.forName(Unknown Source)
      at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(Unknown Source)
      at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Unknown Source)
      at sun.reflect.generics.tree.ClassTypeSignature.accept(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseSig(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseClassValue(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseClassArray(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseArray(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseMemberValue(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseAnnotation2(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseAnnotations2(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseAnnotations(Unknown Source)
      at java.lang.Class.createAnnotationData(Unknown Source)
      at java.lang.Class.annotationData(Unknown Source)
      at java.lang.Class.getAnnotation(Unknown Source)
      at org.testng.internal.annotations.JDK15AnnotationFinder.findAnnotationInSuperClasses(JDK15AnnotationFinder.java:88)
      at org.testng.internal.annotations.JDK15AnnotationFinder.findAnnotation(JDK15AnnotationFinder.java:177)
      at org.testng.internal.annotations.AnnotationHelper.findTest(AnnotationHelper.java:32)
      at org.testng.internal.MethodHelper.isEnabled(MethodHelper.java:158)
      at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:186)
      at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138)
      at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:170)
      at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:104)
      at org.testng.TestRunner.privateRun(TestRunner.java:774)
      at org.testng.TestRunner.run(TestRunner.java:624)
      at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
      at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
      at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
      at org.testng.SuiteRunner.run(SuiteRunner.java:261)
      at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
      at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
      at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
      at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
      at org.testng.TestNG.run(TestNG.java:1048)
      at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
      at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
      at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
  
  FAILED CONFIGURATION: @AfterClass afterPowerMockTestClass
  java.lang.NullPointerException
      at javassist.expr.MethodCall.getClassName(MethodCall.java:110)
      at javassist.expr.MethodCall.getCtClass(MethodCall.java:90)
      at javassist.expr.MethodCall.getMethod(MethodCall.java:129)
      at org.powermock.core.transformers.javassist.support.PowerMockExpressionEditor.edit(PowerMockExpressionEditor.java:79)
      at javassist.expr.ExprEditor.loopBody(ExprEditor.java:197)
      at javassist.expr.ExprEditor.doit(ExprEditor.java:96)
      at javassist.CtClassType.instrument(CtClassType.java:1541)
      at org.powermock.core.transformers.javassist.InstrumentMockTransformer.transform(InstrumentMockTransformer.java:41)
      at org.powermock.core.transformers.javassist.AbstractJavaAssistMockTransformer.transform(AbstractJavaAssistMockTransformer.java:40)
      at org.powermock.core.transformers.support.DefaultMockTransformerChain.transform(DefaultMockTransformerChain.java:43)
      at org.powermock.core.classloader.MockClassLoader.transformClass(MockClassLoader.java:184)
      at org.powermock.core.classloader.javassist.JavassistMockClassLoader.defineAndTransformClass(JavassistMockClassLoader.java:102)
      at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:174)
      at org.powermock.core.classloader.MockClassLoader.loadClassByThisClassLoader(MockClassLoader.java:102)
      at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass1(DeferSupportingClassLoader.java:147)
      at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:98)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at java.lang.Class.forName0(Native Method)
      at java.lang.Class.forName(Unknown Source)
      at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(Unknown Source)
      at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Unknown Source)
      at sun.reflect.generics.tree.ClassTypeSignature.accept(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseSig(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseClassValue(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseClassArray(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseArray(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseMemberValue(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseAnnotation2(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseAnnotations2(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseAnnotations(Unknown Source)
      at java.lang.Class.createAnnotationData(Unknown Source)
      at java.lang.Class.annotationData(Unknown Source)
      at java.lang.Class.getAnnotation(Unknown Source)
      at org.testng.internal.annotations.JDK15AnnotationFinder.findAnnotationInSuperClasses(JDK15AnnotationFinder.java:88)
      at org.testng.internal.annotations.JDK15AnnotationFinder.findAnnotation(JDK15AnnotationFinder.java:177)
      at org.testng.internal.annotations.AnnotationHelper.findTest(AnnotationHelper.java:32)
      at org.testng.internal.MethodHelper.isEnabled(MethodHelper.java:158)
      at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:186)
      at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138)
      at org.testng.internal.TestMethodWorker.invokeAfterClassMethods(TestMethodWorker.java:220)
      at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
      at org.testng.TestRunner.privateRun(TestRunner.java:774)
      at org.testng.TestRunner.run(TestRunner.java:624)
      at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
      at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
      at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
      at org.testng.SuiteRunner.run(SuiteRunner.java:261)
      at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
      at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
      at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
      at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
      at org.testng.TestNG.run(TestNG.java:1048)
      at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
      at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
      at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
  java.lang.IllegalStateException: Failed to transform class with name ServerCommunicator. Reason: null
      at org.powermock.core.classloader.javassist.JavassistMockClassLoader.defineAndTransformClass(JavassistMockClassLoader.java:119)
      at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:174)
      at org.powermock.core.classloader.MockClassLoader.loadClassByThisClassLoader(MockClassLoader.java:102)
      at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass1(DeferSupportingClassLoader.java:147)
      at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:98)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at java.lang.Class.forName0(Native Method)
      at java.lang.Class.forName(Unknown Source)
      at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(Unknown Source)
      at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Unknown Source)
      at sun.reflect.generics.tree.ClassTypeSignature.accept(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseSig(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseClassValue(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseClassArray(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseArray(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseMemberValue(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseAnnotation2(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseAnnotations2(Unknown Source)
      at sun.reflect.annotation.AnnotationParser.parseAnnotations(Unknown Source)
      at java.lang.Class.createAnnotationData(Unknown Source)
      at java.lang.Class.annotationData(Unknown Source)
      at java.lang.Class.getAnnotation(Unknown Source)
      at org.testng.internal.annotations.JDK15AnnotationFinder.findAnnotation(JDK15AnnotationFinder.java:128)
      at org.testng.internal.ExpectedExceptionsHolder.findExpectedClasses(ExpectedExceptionsHolder.java:28)
      at org.testng.internal.ExpectedExceptionsHolder.&lt;init&gt;(ExpectedExceptionsHolder.java:22)
      at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1055)
      at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
      at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
      at org.testng.TestRunner.privateRun(TestRunner.java:774)
      at org.testng.TestRunner.run(TestRunner.java:624)
      at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
      at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
      at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
      at org.testng.SuiteRunner.run(SuiteRunner.java:261)
      at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
      at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
      at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
      at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
      at org.testng.TestNG.run(TestNG.java:1048)
      at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
      at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
      at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
  Caused by: java.lang.NullPointerException
      at javassist.expr.MethodCall.getClassName(MethodCall.java:110)
      at javassist.expr.MethodCall.getCtClass(MethodCall.java:90)
      at javassist.expr.MethodCall.getMethod(MethodCall.java:129)
      at org.powermock.core.transformers.javassist.support.PowerMockExpressionEditor.edit(PowerMockExpressionEditor.java:79)
      at javassist.expr.ExprEditor.loopBody(ExprEditor.java:197)
      at javassist.expr.ExprEditor.doit(ExprEditor.java:96)
      at javassist.CtClassType.instrument(CtClassType.java:1541)
      at org.powermock.core.transformers.javassist.InstrumentMockTransformer.transform(InstrumentMockTransformer.java:41)
      at org.powermock.core.transformers.javassist.AbstractJavaAssistMockTransformer.transform(AbstractJavaAssistMockTransformer.java:40)
      at org.powermock.core.transformers.support.DefaultMockTransformerChain.transform(DefaultMockTransformerChain.java:43)
      at org.powermock.core.classloader.MockClassLoader.transformClass(MockClassLoader.java:184)
      at org.powermock.core.classloader.javassist.JavassistMockClassLoader.defineAndTransformClass(JavassistMockClassLoader.java:102)
  </code></pre>