我们使用Spring作为DI。我们有带有@Inject注释的构造函数的bean。在服务器启动期间,我得到了VerifyError
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'SomeUsefullBean' defined in "../some.jar/../SomeUsefullBean.class":
Initialization of bean failed; nested exception is java.lang.VerifyError:
(class: com/someone/SomeUsefullBean$$EnhancerBySpringCGLIB$$fd8c2b52_39, method: <init> signature:
(Lcom/someone/something1;
Lcom/someone/something2;
Lcom/someone/something3;
Lcom/someone/something4;
Lcom/someone/something5;
Lcom/someone/something6;
Lcom/someone/something7;)V) Register 8 contains wrong type
我检查了我能记住的一切 - 库版本,java版本,Spring版本,甚至在另一台PC上运行构建。所有依赖项都是正确的,已定义且也没有循环依赖性。绝对正常的豆子。
Spring version 4.1.6
答案 0 :(得分:0)
通过删除构造函数并用带注释的setter替换它来解决问题。当构造函数参数大小超过某个量时(在我的情况下为6),JVM会抛出VerifyError。我仍然不知道它为什么会发生以及为什么它会影响Spring bean加载。假设字节码生成器中存在一些错误。对我来说,WA是可以接受的并且工作正常。