tiebin-zhang / powermock

Automatically exported from code.google.com/p/powermock
Apache License 2.0
0 stars 0 forks source link

ClassFormatError: Invalid this class index 50945 in constant pool in class file #409

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Hi,

I wanted to test a class with PowerMock wich is quite big (approximately 6800 
lines). I have to use the annotation SuppressStaticInitializationFor to 
suppress some static initialization of this class. I got the error below.

The version of PowerMock is 1.4.11. Javassist version is 3.15.0-GA (I tried the 
3.16.1 too). The operatin system is Windows XP.

If I decreased the size of the class I didn't get the error.

java.lang.ClassFormatError: Invalid this class index 50945 in constant pool in 
class file com/virginmedia/pco/webserviceclients/SendEmail_V3
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:465)
    at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:210)
    at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:145)
    at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:65)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.getDeclaredFields0(Native Method)
    at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
    at java.lang.Class.getDeclaredFields(Class.java:1743)
    at org.powermock.reflect.internal.WhiteboxImpl.findAllFieldsUsingStrategy(WhiteboxImpl.java:533)
    at org.powermock.reflect.internal.WhiteboxImpl.getFieldsAnnotatedWith(WhiteboxImpl.java:2343)
    at org.powermock.reflect.internal.WhiteboxImpl.getFieldsAnnotatedWith(WhiteboxImpl.java:2326)
    at org.powermock.reflect.Whitebox.getFieldsAnnotatedWith(Whitebox.java:568)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:70)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:284)
    at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:84)
    at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:209)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:148)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:122)
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:102)
    at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
    at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:42)
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
    at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:172)
    at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:104)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:70)

Original issue reported on code.google.com by ric.flai...@gmail.com on 14 Nov 2012 at 4:43

GoogleCodeExporter commented 9 years ago
What Java version are you using? Please try upgrading to the latest version of 
PowerMock and see if you get the same issue. If you're using java 7 you must 
use PowerMock trunk and Javassist 3.17.

Original comment by johan.ha...@gmail.com on 29 Nov 2012 at 6:43

GoogleCodeExporter commented 9 years ago
Hi, thanks for the reply!
I am using jdk1.6.0_30. I tried the latest PowerMock too.
Is it possible that I get this error because the class is too big which I want 
to test?
Thanks,
V.

Original comment by ric.flai...@gmail.com on 30 Nov 2012 at 10:40

GoogleCodeExporter commented 9 years ago
It could be, I remember there was someone a couple of years ago that had a 
similar problem when the class was huge. If it doesn't work with the latest 
version of Javassist then I think you should post a bug report on the Javassist 
bug tracker.

Original comment by johan.ha...@gmail.com on 30 Nov 2012 at 11:14

GoogleCodeExporter commented 9 years ago
Ok, thank you for your help!
V.

Original comment by ric.flai...@gmail.com on 30 Nov 2012 at 11:19

GoogleCodeExporter commented 9 years ago
You can use this option to fix this problem: -XX:-UseSplitVerifier
If you run your test in eclipse : Windows-Preferences-Java-Installed JREs
Select your JDK and click on edit, in the defalut VM arguments add 
-XX:-UseSplitVerifier
I faced a similar problem and it works fine for me

Original comment by mohamed....@gmail.com on 8 May 2013 at 2:59

GoogleCodeExporter commented 9 years ago

Original comment by johan.ha...@gmail.com on 28 May 2014 at 1:13