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!
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
Views
Replies
Total Likes
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
Views
Replies
Total Likes
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.
Views
Replies
Total Likes
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
>
Views
Replies
Total Likes
Yes, I tried this but the same error. Let me know If you want me to share any more details.
Views
Replies
Total Likes
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
Views
Replies
Total Likes
Yes, we are seeing same issue on couple of machines including jenkins build.
Views
Replies
Total Likes
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
Views
Replies
Total Likes
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.
Views
Replies
Total Likes
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
Views
Replies
Total Likes
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.<init>()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.<init>()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)
Views
Replies
Total Likes
This too can be an upgrade bug. You should report this to customer support. You may need a hotfix.