在Spring中创建bean期间的VerifyError

时间:2015-07-22 06:32:05

标签: java spring verifyerror

我们使用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

1 个答案:

答案 0 :(得分:0)

通过删除构造函数并用带注释的setter替换它来解决问题。当构造函数参数大小超过某个量时(在我的情况下为6),JVM会抛出VerifyError。我仍然不知道它为什么会发生以及为什么它会影响Spring bean加载。假设字节码生成器中存在一些错误。对我来说,WA是可以接受的并且工作正常。