Java.lang.IllegalAccessError en ehcache y Hibernate

Descripción

La línea superior del stack trace contiene el siguiente mensaje:

18:16:59,359 ERROR [STDERR] java.lang.IllegalAccessError: 
tried to access method net.sf.ehcache.CacheManager.<init>()
V from class  org.hibernate.cache.EhCacheProvider

En particular, esto fue visto corriendo el starters kit de jbpm, donde se deployea un WAR con una aplicación de ejemplo, más un servicio contenido en la carpeta jbpm.sar.

El error aparece en el log de JBoss al echar a andar el servidor de aplicación. Describe una situación con el timer de jbpm implementado en el WAR.

Esto se puede dar en otros contextos.

Causa

El error es causado por una incompatibilidad entre las versiones de Hibernate y ehcache. Este último componente es un cache embebido para aplicaciones Java, y que es utilizado internamente por Hibernate.

El paquete starters kit de jbpm viene con la versión 1.1 de ehcache, la cual no funciona con la versión de Hibernate que viene incluida en JBoss 4.0.4GA (actualmente en uso para Fondos Concursables DuocUC).

Solución

Se debe reemplazar la versión de ehcache, bajandola directamente desde el sitio web que aparece en la sección de referencias. Para efectos de JBoss 4.0.4GA se probó con éxito con la versión 1.2.4.