ahmaddarawshi / powermock

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

Upgrade to Javassist 3.11.0.GA #130

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
do it.

Original issue reported on code.google.com by johan.ha...@gmail.com on 8 Jul 2009 at 8:42

GoogleCodeExporter commented 9 years ago
This produces errors in PowerMock when doing byte-code manipulation. Probably a 
bug
in 3.11. I've upgraded to 3.10 in the meantime.

Original comment by johan.ha...@gmail.com on 8 Jul 2009 at 10:05

GoogleCodeExporter commented 9 years ago
The error happens in PrepareForTestAnnotationTest and looks like:
java.lang.ClassFormatError: Invalid length 636 in LocalVariableTable in class 
file
org/apache/mina/core/session/AbstractIoSession
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:466)
    at
org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.jav
a:206)
    at
org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader
.java:150)
    at
org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupport
ingClassLoader.java:57)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:466)
    at
org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.jav
a:206)
    at
org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader
.java:150)
    at
org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupport
ingClassLoader.java:57)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:466)
    at
org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.jav
a:206)
    at
org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader
.java:150)
    at
org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupport
ingClassLoader.java:57)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)
    at
sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionF
actory.java:95)
    at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:107)
    at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)
    at sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:370)
    at sun.reflect.annotation.AnnotationParser.parseClassValue(AnnotationParser.java:351)
    at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:653)
    at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:460)
    at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:286)
    at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:222)
    at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69)
    at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52)
    at java.lang.Class.initAnnotationsIfNecessary(Class.java:3072)
    at java.lang.Class.getAnnotations(Class.java:3052)
    at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.cl
assAnnotations(PowerMockJUnit44RunnerDelegateImpl.java:177)
    at
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.ge
tDescription(PowerMockJUnit44RunnerDelegateImpl.java:169)
    at
org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.get
Description(JUnit4TestSuiteChunkerImpl.java:173)
    at
org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.
getDescription(AbstractCommonPowerMockRunner.java:39)
    at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.sendTree(JUnit4T
estClassReference.java:38)
    at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.sendTrees(RemoteTestRunne
r.java:476)
    at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner
.java:464)
    at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner
.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.jav
a:197)

Original comment by johan.ha...@gmail.com on 8 Jul 2009 at 10:14

GoogleCodeExporter commented 9 years ago

Original comment by johan.ha...@gmail.com on 7 Sep 2009 at 7:23

GoogleCodeExporter commented 9 years ago
Any updates on this?

Original comment by dmitry.k...@gmail.com on 16 Nov 2009 at 8:32

GoogleCodeExporter commented 9 years ago
Unfortunately not. Guess we have to wait for the next version. You can of course
override the dependency and use 3.11 yourself if you like since most things 
work.

Original comment by johan.ha...@gmail.com on 16 Nov 2009 at 9:28

GoogleCodeExporter commented 9 years ago
btw, have you reported this problem to the javassist JIRA?

Original comment by andrei.i...@gmail.com on 26 Nov 2009 at 11:09

GoogleCodeExporter commented 9 years ago
No I haven't but we probably should. The thing is that's it's difficult to give 
a
good description of what's causing the problem.

Original comment by johan.ha...@gmail.com on 26 Nov 2009 at 12:36

GoogleCodeExporter commented 9 years ago
I hope you can manage to get that description after all... as I've reported, 
I've
managed to run into a case where the jvm crashes with 3.10

Original comment by andrei.i...@gmail.com on 5 Jan 2010 at 3:38

GoogleCodeExporter commented 9 years ago
I've seem to have run into the same situation. One of my classes, that were
instrumented with @PrepareForTest, called the length() method on a 
StringBuilder,
which caused the bug with javassist 3.10.0
(https://jira.jboss.org/jira/browse/JASSIST-76). So, I switched javassist 
3.10.0 with
3.11.0.GA, but that caused the "java.lang.ClassFormatError: Invalid length 636 
in
LocalVariableTable in class file" as described above, so I had to go back to 
3.10.0.

I managed to get around the issue by casting the StringBuilder to a CharSequence
first (INVOKEVIRTUAL vs INVOKEINTERFACE?). This means that I had to change my 
code to
make tests work :<

Original comment by eeckhout...@gmail.com on 18 Mar 2010 at 4:28

GoogleCodeExporter commented 9 years ago
Sorry to hear that but thanks for reporting about your findings. It's been a 
while
since javassist released anything..

Original comment by johan.ha...@gmail.com on 21 Mar 2010 at 8:18

GoogleCodeExporter commented 9 years ago
I had the same problem with both JA 3.10.0 and 3.11.0. Now I upgraded to 
3.12.0.GA
which was released on april 16, this solved the problem for me. 

Original comment by daniel.b...@gmail.com on 22 Apr 2010 at 12:10

GoogleCodeExporter commented 9 years ago
That's great news. Didn't know that it was released! I'll and an issue for 
updating to 
that version. Thanks for letting us know.

Original comment by johan.ha...@gmail.com on 22 Apr 2010 at 12:37

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
It exists in 3.12.0.GA as well :(

Original comment by ankurmit...@gmail.com on 2 Jul 2010 at 5:42

GoogleCodeExporter commented 9 years ago
Does it happen with Javassist 3.14 as well?

Original comment by johan.ha...@gmail.com on 23 Nov 2010 at 9:44

GoogleCodeExporter commented 9 years ago
I am getting the same error (java.lang.ClassFormatError: Invalid method Code 
length 70878 in class file) with the currently available download for 
powermockito (1,4,7) which uses javasisit 1.14.0-GA.

Original comment by gavin.tr...@gmail.com on 24 Feb 2011 at 3:26

GoogleCodeExporter commented 9 years ago
Additional:
I am using org.powermock.modules.junit4.PowerMockRunner

and attempting a whenNew:
whenNew(ccPop.class).withArguments(anyInt()).thenThrow(new 
RuntimeException("BooHoo"));

ccPop.class is a class created with the main method of the class X defined in 
the @PrepareForTest annotation.

Thanks
Gavin

Original comment by gavin.tr...@gmail.com on 24 Feb 2011 at 3:30

GoogleCodeExporter commented 9 years ago
We're using 3.14 now

Original comment by johan.ha...@gmail.com on 19 May 2011 at 7:12