Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

AEM 6.3 upgrade issue: WCmUse / WCMUsePojo mocking in Junit

ravitejakolla
Level 2
Level 2

Seeing the below java.lang.VerifyError after upgrading from 6.2 to 6.3

Java versions used:

1.8.0_151 and 1.8.0_77

Tried using uber jar dependency as below as apis and later as obfuscated-apis:

<groupId>com.adobe.aem</groupId>

  <artifactId>uber-jar</artifactId>

  <version>6.3.0</version>

  <classifier>obfuscated-apis</classifier>

  <scope>provided</scope>

<groupId>com.adobe.aem</groupId>

  <artifactId>uber-jar</artifactId>

  <version>6.3.0</version>

  <classifier>apis</classifier>

Error Log:

Running com.page.comp.ComponentTest

Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.66 sec <<< FAILURE! - in com.amex.page.comp.ComponentTest

com.amex.page.comp.ComponentTest  Time elapsed: 0.193 sec  <<< ERROR!

java.lang.VerifyError: Constructor must call super() or this() before return

Exception Details:

  Location:

    com/adobe/cq/sightly/WCMUsePojo.<init>()V @1: return

  Reason:

    Error exists in the bytecode

  Bytecode:

    0x0000000: 2ab1                                  

  at java.lang.Class.getDeclaredConstructors0(Native Method)

  at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)

  at java.lang.Class.getDeclaredConstructors(Class.java:2020)

  at org.mockito.internal.util.reflection.FieldInitializer$ParameterizedConstructorInstantiator.biggestConstructor(FieldInitializer.java:265)

  at org.mockito.internal.util.reflection.FieldInitializer$ParameterizedConstructorInstantiator.instantiate(FieldInitializer.java:235)

  at org.mockito.internal.util.reflection.FieldInitializer.acquireFieldInstance(FieldInitializer.java:123)

  at org.mockito.internal.util.reflection.FieldInitializer.initialize(FieldInitializer.java:85)

  at org.mockito.internal.configuration.injection.ConstructorInjection.processInjection(ConstructorInjection.java:52)

  at org.mockito.internal.configuration.injection.MockInjectionStrategy.process(MockInjectionStrategy.java:68)

  at org.mockito.internal.configuration.injection.MockInjectionStrategy.relayProcessToNextStrategy(MockInjectionStrategy.java:89)

  at org.mockito.internal.configuration.injection.MockInjectionStrategy.process(MockInjectionStrategy.java:71)

  at org.mockito.internal.configuration.injection.MockInjection$OngoingMockInjection.apply(MockInjection.java:92)

  at org.mockito.internal.configuration.DefaultInjectionEngine.injectMocksOnFields(DefaultInjectionEngine.java:20)

  at org.mockito.internal.configuration.InjectingAnnotationEngine.injectMocks(InjectingAnnotationEngine.java:100)

  at org.powermock.api.mockito.internal.configuration.PowerMockitoInjectingAnnotationEngine.process(PowerMockitoInjectingAnnotationEngine.java:35)

  at org.powermock.api.extension.listener.AnnotationEnabler.injectSpiesAndInjectToSetters(AnnotationEnabler.java:60)

  at org.powermock.api.extension.listener.AnnotationEnabler.beforeTestMethod(AnnotationEnabler.java:55)

  at org.powermock.tests.utils.impl.PowerMockTestNotifierImpl.notifyBeforeTestMethod(PowerMockTestNotifierImpl.java:90)

  at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:292)

  at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127)

  at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82)

  at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282)

  at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:86)

  at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49)

  at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207)

  at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146)

  at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120)

  at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:33)

  at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:45)

  at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:122)

  at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:104)

  at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)

  at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:53)

  at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)

  at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)

  at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)

​Thanks for your help in advance!

12 Replies
Rima_Mittal
Level 4
Level 4

can you try starting AEM with a -noverify option and see if it helps?

Please refer Keep Calm and Code It.: java.lang.VerifyError: Bad method call from inside of a branch .

Thanks

Rima Mittal

smacdonald2008
Level 10
Level 10

Could be some sort of upgrade bug. See if you can build an AEM Maven 12 on your instance -- Creating an Adobe Experience Manager 6.3 Project using Adobe Maven Archetype 12

ravitejakolla
Level 2
Level 2

Its working fine when I'm using 6.2 jar.

<groupId>com.adobe.aem</groupId>

  <artifactId>uber-jar</artifactId>

  <version>6.2.0</version>

  <classifier>obfuscated-apis</classifier>

Can you help me understand what goings on.

smacdonald2008
Level 10
Level 10

Have you placed both of these in the Main POM file?

<dependency>

               <groupId>com.adobe.aem</groupId>

               <artifactId>uber-jar</artifactId>

               <version>6.3.0</version>

               <!-- for AEM6.1 use this version     : <version>6.1.0</version> -->

               <!-- for AEM6.1 SP1 use this version : <version>6.1.0-SP1-B0001</version> -->

               <!-- for AEM6.1 SP2 use this version : <version>6.1.0-SP2</version> -->

               <!-- for AEM6.2 use this version     : <version>6.2.0</version> -->

               <classifier>obfuscated-apis</classifier>

               <scope>provided</scope>

           </dependency>

            

           <dependency>

               <groupId>org.apache.geronimo.specs</groupId>

               <artifactId>geronimo-atinject_1.0_spec</artifactId>

               <version>1.0</version>

               <scope>provided</scope>

           </dependency>

ravitejakolla
Level 2
Level 2

Yes, I tried this but the same error. Let me know If you want me to share any more details.

Jörg_Hoh
Employee
Employee

Bytecode verification issues are not tied to the Java code itself, but rather to the JVM. Either you hit a JVM bug or you might have hardware issues. Can you reproduce this problem on a different machine?

Jörg

ravitejakolla
Level 2
Level 2

Yes, we are seeing same issue on couple of machines including jenkins build.

Jörg_Hoh
Employee
Employee

I found java - Constructor must call super() or this() before return in method - Stack Overflow  which can potentially explain it. You are using a mocking framework which manipulates bytecode ...

Jörg

ravitejakolla
Level 2
Level 2

Hi Jorg Hoh,


Thank you for the update.

I was able to build the project in another machine, but can you give me some high level context what would be the reason when we say hard ware issues.

Jörg_Hoh
Employee
Employee

If see this issue when building on multiple machines I would conclude that it's not an hardware issue. If only happened on a single machine, I would assume that you have an hardware issue with the RAM; if you have it on multiple machines, it's very likely something else (hardware issues on memory most often go unnoticed, and it's rather unrealistic that the problem turns out at the same time on multiple machines).

Please validate the the exact java version you are using across the machines you are building one, and see if there is a pattern.

Jörg

rushikesavaredd
Level 1
Level 1

Upgrade issue.Getting below error's when we have upgraded from AEM 6.2 to 6.4. Can you help me understand this issue.

<h1>Constructor must call super() or this() before return

Exception Details:

  Location:

    com/fasterxml/jackson/core/TreeCodec.&lt;init&gt;()V @1: return

  Reason:

    Error exists in the bytecode

  Bytecode:

    0x0000000: 2ab1                                  

</h1>

        <p>Cannot serve request to /bin/newsfeed.news.json in com.core.newsfeed.NewsfeedServlet</p>

       

        <h3>Exception:</h3>

<pre>

java.lang.VerifyError: Constructor must call super() or this() before return

Exception Details:

  Location:

    com/fasterxml/jackson/core/TreeCodec.&lt;init&gt;()V @1: return

  Reason:

    Error exists in the bytecode

  Bytecode:

    0x0000000: 2ab1 

----------------------------------------------------------

at com.newsfeed.NewsfeedServlet.doGet(NewsfeedServlet.java:48)

at org.apache.sling.api.servlets.SlingSafeMethodsServlet.mayService(SlingSafeMethodsServlet.java:266)

at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:342)

at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:374)

at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:552)

at org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java:44)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:77)

at com.day.cq.wcm.core.impl.WCMDebugFilter.doFilter(WCMDebugFilter.java:138)

smacdonald2008
Level 10
Level 10

This too can be an upgrade bug. You should report this to customer support. You may need a hotfix.