R. Si usa maven, una forma útil de depurar frascos en conflicto es:
mvn dependency:tree
Por ejemplo, para una excepción:
java.lang.SecurityException: class "javax.servlet.HttpConstraintElement"'s signer information does not match signer information of other classes in the same package
hacemos:
mvn dependency:tree|grep servlet
Su salida:
[INFO] +- javax.servlet:servlet-api:jar:2.5:compile
[INFO] +- javax.servlet:jstl:jar:1.2:compile
[INFO] | +- org.eclipse.jetty.orbit:javax.servlet.jsp:jar:2.2.0.v201112011158:compile
[INFO] | +- org.eclipse.jetty.orbit:javax.servlet.jsp.jstl:jar:1.2.0.v201105211821:compile
[INFO] | +- org.eclipse.jetty.orbit:javax.servlet:jar:3.0.0.v201112011016:compile
[INFO] +- org.eclipse.jetty:jetty-servlet:jar:9.0.0.RC2:compile
muestra un conflicto entre servlet-api 2.5 y javax.servlet 3.0.0.x.
B. Otras sugerencias útiles (cómo depurar la excepción de seguridad y cómo excluir deps maven) están en la pregunta en La información del firmante no coincide .