title: Mockito cannot mock this class: interface
body: <p>I'm having an issue with mockito and powermock, I can mock an abstract class with a final static method with no problems. When trying to mock an Interface as with <code>WebIServerSession</code> I'm getting the stacktrace below. I've had a look at other issues in powermock github repo and it seems to be related with the jvm version. I've already upgraded to the latest 1.8 java version as stated in <a href="https://github.com/mockito/mockito/issues/636" rel="noreferrer">https://github.com/mockito/mockito/issues/636</a> and I'm still getting the same error. Might it be related with Powermock compatibility with Mockito 2? </p>
  
  <pre><code>import org.powermock.api.mockito.PowerMockito;
  import org.powermock.core.classloader.annotations.PrepareForTest;
  import org.powermock.modules.testng.PowerMockTestCase;
  import org.testng.annotations.BeforeMethod;
  import org.testng.annotations.Test;
  
  import static org.mockito.ArgumentMatchers.anyString;
  import static org.mockito.Mockito.when;
  import static org.powermock.api.mockito.PowerMockito.doReturn;
  import static org.powermock.api.mockito.PowerMockito.mock;
  import static org.powermock.api.mockito.PowerMockito.mockStatic;
  import static org.powermock.api.mockito.PowerMockito.spy;
  import static org.powermock.api.mockito.PowerMockito.verifyPrivate;
  import static org.powermock.api.mockito.PowerMockito.whenNew;
  import static org.testng.Assert.assertEquals;
  import static org.testng.Assert.assertTrue;
  
  @BeforeMethod
  public void setup() throws Exception {
      mockStatic(ResourceBundle.class);
      mockStatic(WebObjectsFactory.class);
      WebObjectsFactory webObjectsFactory = mock(WebObjectsFactory.class);
      WebIServerSession webIServerSession = mock(WebIServerSession.class);
  
      PowerMockito.when(WebObjectsFactory.getInstance()).thenReturn(webObjectsFactory);
      PowerMockito.when(webObjectsFactory.getIServerSession()).thenReturn(webIServerSession);
      whenNew(ThreadLocal.class).withNoArguments().thenReturn(errorContainer);
  
      MockitoAnnotations.initMocks(this);
  }
  
  
  @Test
  public void shouldBeTrue() {
      assertTrue(true);
  }
  </code></pre>
  
  <p>Maven dependencies:</p>
  
  <pre><code>&lt;dependencies&gt;
      &lt;dependency&gt;
          &lt;groupId&gt;org.testng&lt;/groupId&gt;
          &lt;artifactId&gt;testng&lt;/artifactId&gt;
          &lt;version&gt;6.14.3&lt;/version&gt;
          &lt;scope&gt;test&lt;/scope&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
          &lt;groupId&gt;org.mockito&lt;/groupId&gt;
          &lt;artifactId&gt;mockito-core&lt;/artifactId&gt;
          &lt;version&gt;2.8.9&lt;/version&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
          &lt;groupId&gt;org.powermock&lt;/groupId&gt;
          &lt;artifactId&gt;powermock-core&lt;/artifactId&gt;
          &lt;version&gt;1.7.4&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-testng&lt;/artifactId&gt;
          &lt;version&gt;1.7.4&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-api-mockito2&lt;/artifactId&gt;
          &lt;version&gt;1.7.4&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-reflect&lt;/artifactId&gt;
          &lt;version&gt;1.7.4&lt;/version&gt;
          &lt;scope&gt;test&lt;/scope&gt;
      &lt;/dependency&gt;
  &lt;/dependencies&gt;
  </code></pre>
  
  <p>Stacktrace:</p>
  
  <pre><code>org.mockito.exceptions.base.MockitoException: 
  Mockito cannot mock this class: interface com.microstrategy.web.objects.WebIServerSession.
  
  Mockito can only mock non-private &amp; non-final classes.
  If you're not sure why you're getting this error, please report to the mailing list.
  
  
  Java               : 1.8
  JVM vendor name    : Oracle Corporation
  JVM vendor version : 25.191-b12
  JVM name           : Java HotSpot(TM) 64-Bit Server VM
  JVM version        : 1.8.0_191-b12
  JVM info           : mixed mode
  OS name            : Mac OS X
  OS version         : 10.14.1
  
  
  Underlying exception : java.lang.IllegalArgumentException: Could not create type
  
      at com.myproject.SSOESMTest.setup(SSOESMTest.java:63)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
      at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59)
      at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:458)
      at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222)
      at org.testng.internal.Invoker.invokeMethod(Invoker.java:523)
      at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
      at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
      at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
      at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
      at org.testng.TestRunner.privateRun(TestRunner.java:648)
      at org.testng.TestRunner.run(TestRunner.java:505)
      at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
      at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
      at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
      at org.testng.SuiteRunner.run(SuiteRunner.java:364)
      at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
      at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
      at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
      at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
      at org.testng.TestNG.runSuites(TestNG.java:1049)
      at org.testng.TestNG.run(TestNG.java:1017)
      at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
      at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)
  Caused by: java.lang.IllegalArgumentException: Could not create type
      at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:154)
      at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:365)
      at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:174)
      at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:376)
      at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.mockClass(TypeCachingBytecodeGenerator.java:32)
      at org.mockito.internal.creation.bytebuddy.SubclassByteBuddyMockMaker.createMockType(SubclassByteBuddyMockMaker.java:71)
      at org.mockito.internal.creation.bytebuddy.SubclassByteBuddyMockMaker.createMock(SubclassByteBuddyMockMaker.java:42)
      at org.powermock.api.mockito.mockmaker.PowerMockMaker.createMock(PowerMockMaker.java:50)
      at org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator.createMethodInvocationControl(DefaultMockCreator.java:116)
      at org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator.createMock(DefaultMockCreator.java:69)
      at org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator.mock(DefaultMockCreator.java:46)
      at org.powermock.api.mockito.PowerMockito.mock(PowerMockito.java:138)
      ... 28 more
  Caused by: java.lang.NoClassDefFoundError: com/microstrategy/utils/xml/SAXSupport
      at java.lang.Class.getDeclaredMethods0(Native Method)
      at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
      at java.lang.Class.getDeclaredMethods(Class.java:1975)
      at net.bytebuddy.description.method.MethodList$ForLoadedMethods.&lt;init&gt;(MethodList.java:109)
      at net.bytebuddy.description.type.TypeDescription$ForLoadedType.getDeclaredMethods(TypeDescription.java:8426)
      at net.bytebuddy.description.type.TypeDescription$Generic$OfNonGenericType.getDeclaredMethods(TypeDescription.java:3654)
      at net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default.doAnalyze(MethodGraph.java:634)
      at net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default.analyze(MethodGraph.java:596)
      at net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default.doAnalyze(MethodGraph.java:632)
      at net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default.analyze(MethodGraph.java:596)
      at net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default.doAnalyze(MethodGraph.java:632)
      at net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default.analyze(MethodGraph.java:596)
      at net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default.doAnalyze(MethodGraph.java:632)
      at net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default.compile(MethodGraph.java:567)
      at net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$AbstractBase.compile(MethodGraph.java:465)
      at net.bytebuddy.dynamic.scaffold.MethodRegistry$Default.prepare(MethodRegistry.java:463)
      at net.bytebuddy.dynamic.scaffold.subclass.SubclassDynamicTypeBuilder.make(SubclassDynamicTypeBuilder.java:198)
      at net.bytebuddy.dynamic.scaffold.subclass.SubclassDynamicTypeBuilder.make(SubclassDynamicTypeBuilder.java:189)
      at net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase.make(DynamicType.java:3394)
      at net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$Delegator.make(DynamicType.java:3583)
      at org.mockito.internal.creation.bytebuddy.SubclassBytecodeGenerator.mockClass(SubclassBytecodeGenerator.java:94)
      at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator$1.call(TypeCachingBytecodeGenerator.java:37)
      at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator$1.call(TypeCachingBytecodeGenerator.java:34)
      at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:152)
      ... 39 more
  Caused by: java.lang.ClassNotFoundException: com.microstrategy.utils.xml.SAXSupport
      at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
      at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:202)
      at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass1(DeferSupportingClassLoader.java:89)
      at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:79)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
      ... 63 more
  
  
  Test ignored.
  
  ===============================================
  Default Suite
  Total tests run: 1, Failures: 0, Skips: 1
  Configuration Failures: 1, Skips: 2
  ===============================================
  
  
  Process finished with exit code 0
  </code></pre>