I had a weird java.lang.VerifyError on my laptop with glassfish4-b77
that prevented me from deploying @WebsocketEndpoints. However, same
application runs fine on exactly the same glassfish4-b77 on my desktop.
Here is the error on the laptop:
[#|2013-02-25T09:19:22.282+0100|SEVERE|glassfish
4.0|javax.enterprise.web|_ThreadID=1;_ThreadName=main;_TimeMillis=13617
80362282;_LevelValue=1000;|WebModule[/chatserver]Exception starting
filter WebSocket filter
java.lang.VerifyError: (class:
org/glassfish/tyrus/server/TyrusServerContainer, method: deploy
signature: (Lorg/glassfish/tyrus/EndpointWrapper;)V) Incompatible
argument to function
at
org.glassfish.tyrus.server.ServerContainerFactory.create(ServerContaine
rFactory.java:119)
at
org.glassfish.tyrus.servlet.TyrusServletFilter.init(TyrusServletFilter.
java:97)
at
org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationF
ilterConfig.java:275)
at
org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilt
erConfig.java:131)
...
I then started glassfish with -verbose:class in order to see where all
the classes come from. This is a snippet of my laptop log:
[Loaded org.glassfish.tyrus.server.TyrusServerContainer from
file:/opt/glassfish4b77/glassfish/modules/tyrus-server.jar]
[Loaded org.glassfish.tyrus.spi.SPIEndpoint from
file:/opt/glassfish4b77/glassfish/modules/tyrus-spi.jar]
[Loaded org.glassfish.tyrus.spi.SPIEndpoint from
file:/opt/glassfish4b77/glassfish/modules/tyrus-core.jar]
[Loaded org.glassfish.tyrus.EndpointWrapper from
file:/opt/glassfish4b77/glassfish/modules/tyrus-core.jar]
[Loaded java.lang.VerifyError from /opt/jdk1.7.0_09/jre/lib/rt.jar]
[Loaded java.lang.Throwable$PrintStreamOrWriter from
/opt/jdk1.7.0_09/jre/lib/rt.jar]
SPIEndpoint is loaded twice from 2 different jars (tyrus-core and
tyrus-spi). The desktop log shows that SPIEndpoint is loaded only once,
from tyrus-core.jar.
This seems like a packaging issue?
- Johan