Verification problems (typically seen as java.lang.VerifyErrors)
are potentially caused by the cache returning incorrect class bytes.
This problem should not occur under typical usage, but there are
two situations in which it could happen:
- The classloader is using a SharedClassTokenHelper and the classes
in the cache are out-of-date (dynamic updates are not supported with
a SharedClassTokenHelper).
- Runtime bytecode modification is being used that is either not
fully predictable in the modifications it does, or it is sharing a
cache with another JVM that is doing different (or no) modifications.
Regardless
of the reason for the VerifyError, running in safemode
(see Using the safemode option)
should show if any bytecode in the cache is inconsistent with what
the JVM is expecting.
When you have determined the cause of the problem,
destroy the cache, correct the cause of the problem, and try again.