We tried to migrate our application from Vaadin 7.5.9 to 7.6.1, but after recompiling the widgetset and theme, the views don’t show at all and we get these message in the server logfile:
java.lang.VerifyError: Bad return type
Exception Details:
Location:
com/vaadin/ui/Grid.getState(Z)Lcom/vaadin/shared/ui/TabIndexState; @5: areturn
Reason:
Type ‘com/vaadin/shared/ui/grid/GridState’ (current frame, stack[0]
) is not assignable to ‘com/vaadin/shared/ui/TabIndexState’ (from method signature)
Current Frame:
bci: @5
flags: { }
locals: { ‘com/vaadin/ui/Grid’, integer }
stack: { ‘com/vaadin/shared/ui/grid/GridState’ }
Bytecode:
0000000: 2a1b b600 82b0
and
java.lang.VerifyError: Bad return type
Exception Details:
Location:
com/vaadin/ui/Table.getState()Lcom/vaadin/shared/ui/select/AbstractSelectState; @4: areturn
Reason:
Type ‘com/vaadin/shared/ui/table/TableState’ (current frame, stack[0]
) is not assignable to ‘com/vaadin/shared/ui/select/AbstractSelectState’ (from method signature)
Current Frame:
bci: @4
flags: { }
locals: { ‘com/vaadin/ui/Table’ }
stack: { ‘com/vaadin/shared/ui/table/TableState’ }
Bytecode:
0000000: 2ab6 02e7 b0
Rather check your packed
WEB-INF/lib directory. It sometimes happens to me, that 2 versions of the same library are packed there, when I build the war file from Eclipse.
This VerifyError means that the bytecode in the JAR is not accepted by the Virtual Machine.
The problem with the verifier is that it is not 100% perfectly specified, at least this was the case when
The Java Virtual Machine Specification 2nd Edition was the latest (and it was for a long time!).
Please check that the server is actually powered by a proper Oracle-certified Java Virtual Machine, change if
necessary.
And please do let us know which JVM it is that you were using!