[ https://issues.jboss.org/browse/JASSIST-228?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12994655#comment-12994655 ]
Lauri Vasko commented on JASSIST-228:
-------------------------------------
I stumbled upon this issue as well with java7u65 that failed my unit-tests. Upon researching the _interwebs_ i discovered workaround for this.
You need to add *-XX:-UseSplitVerifier* parameter when starting your unit-tests (_or failing program in general_).
In order to make unit-tests ran w/ maven work i had to add this parameter to _maven-surefire-plugin_ like so:
{code}
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.10</version>
<configuration>
<argLine>-XX:-UseSplitVerifier</argLine>
</configuration>
</plugin>
</plugins>
</build>
{code}
> Powermock / Javassist creates illegal constructors for JDK 1.7.0u65 and 1.8.0u11 with -target 7.
> ------------------------------------------------------------------------------------------------
>
> Key: JASSIST-228
> URL: https://issues.jboss.org/browse/JASSIST-228
> Project: Javassist
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Affects Versions: 3.18.2-GA
> Environment: JDK 1.7.0u65 and 1.8.0u11
> Reporter: Florian Burka
> Assignee: Shigeru Chiba
> Attachments: powermock-javassist-bug.tar.gz
>
>
> Javassist creates illegal constructors for JDK 1.7.0u65 and 1.8.0u11 with -target 7, I have a test that reproduces it at https://github.com/burka/powermock-javassist-bug .
> Somewhere in MainMockTransformer.transform(clazz), I think inside the PowerMockExpressionEditor, the responsible action must have taken place.
> If you remove -target 7 it works for both JDK 1.7.0u65 and 1.8.0u11.
> {code}
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.003 sec <<< FAILURE! - in ConstructorTest
> testConstructorManipulationFailure(ConstructorTest) Time elapsed: 0.002 sec <<< ERROR!
> java.lang.VerifyError: Bad <init> method call from inside of a branch
> Exception Details:
> Location:
> MockedClass.<init>()V @32: invokespecial
> Reason:
> Error exists in the bytecode
> Bytecode:
> 0000000: 2a4c 120f b800 1503 bd00 0d12 16b8 001a
> 0000010: b800 204e 2db2 0024 a500 0e2a 01c0 0026
> 0000020: b700 29a7 0009 2bb7 002b 0157 b1
> Stackmap Table:
> full_frame(@38,{UninitializedThis,UninitializedThis,Top,Object[#13]},{})
> full_frame(@44,{Object[#2],Object[#2],Top,Object[#13]},{})
> at java.lang.Class.getDeclaredConstructors0(Native Method)
> at java.lang.Class.privateGetDeclaredConstructors(Class.java:2658)
> at java.lang.Class.getDeclaredConstructors(Class.java:2007)
> at ConstructorTest.testConstructorManipulationFailure(ConstructorTest.java:13)
> {code}
> I created a powermock ticket at
> https://code.google.com/p/powermock/issues/detail?id=505
--
This message was sent by Atlassian JIRA
(v6.2.6#6264)