java - AEM 6.3 升级问题 "Error exists in the bytecode"

标签 java aem powermock

AEM 6.3 升级后的构建问题。 尝试将 uber-jar 6.3.0 api 和 obfuscated-apis 作为依赖项

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.home.components.AppTest
Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.841 
sec <<< FAILURE! - in com.home.components.AppTest
com.home.components.AppTest  Time elapsed: 0.271 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)

最佳答案

这是 java jdk 1.7 和 powermock 的一个已知错误。检查this发布有关该错误的更多详细信息。

Powermock/Javassist 使用 -target 7 #525 为 JDK 1.7.0u65 和 1.8.0u11 创建非法构造函数

按照帖子中的说明,尝试将您的 jdk 版本升级到 7u758u51 或更高版本,并使用新版本重建您的项目。这应该可以解决您的问题。

不推荐 - 如果由于项目限制而无法使用较新版本的 java,请使用 -noverify 参数来初始化 jvm。

关于java - AEM 6.3 升级问题 "Error exists in the bytecode",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50322144/

相关文章:

java - @RunWith(JUnitParamsRunner.class) 和 PowerMockRule

java - 模拟静态方法

java - Gradle 导入 Powermock 和 Mockito

java - 我应该遍历 hibernate 集合来查找实体,还是使用标准

java - 在 AEM 中的 CRXDE Lite 中访问/crx/de/replication.jsp 时出现 500 服务器错误

Java 应用程序和 C++ 应用程序集成/通信

spring - AEM 6.3 - 将 Felix 迁移到 OSGi 注释 : How to deal with propertyPrivate?

aem - 视觉上无法识别 html

java - 安装后通过 Google Protect 阻止应用程序

java - 使用 Java Streams 从超集中获取子集