Mar 28, 2008 12:14
Hoy toca quejarse otro poco de OpenSUSE, y ya que estamos de SUN. Un error muy común recientemente con las instalaciones de java en linux es que al intentar ejecutar una aplicación que dependa de awt, osea cualquiera que tenga entorno gráfico da el siguiente mensaje de error:
xcb_xlib_unlock: Assertion `c->xlib.lock' failed.
Este error es debido a que SUN usa en su JDK una biblioteca de funciones ( tengo que quitarme la manía de decir librería ) que se llama Xinerama para acceder a las opciones gráficas de las XWindows ( sistema de ventanas de *nix ). Los muy listos, han usado una versión estática de la librería que incluyen en la distribución. Resultado, recientemente han cambiado la forma en que funcionan algunas bibliotecas en las XWindoes y llaman a librerías nuevas. Así que la versión de Xinerama que viene con el paquete de SUN no funciona.
¿ Como se arregla ? Xinerama viene de serie con la mayoría de las distribuciones y ya corregida. Instalamos la última versión de nuestra distribución y como normalmente buscará primero la versión del SO antes de la propia, asunto solucionado.
¿ Qué hacer cuando esto no tira, por ejemplo en OpenSUSE, entonces toca hacer la chapuza ( algunos lo llaman workarround para que suene más técnico, pero sigue siendo una chapuza ) que consiste en cambiar los enlaces a la biblioteca que está mal, por enlaces a una biblioteca que esté bien.
sed -i 's/XINERAMA/FAKEEXTN/g' /opt/jdk1.6.0_03/jre/lib/i386/xawt/libmawt.so
La dirección a la biblioteca libawt.so hay que cambiarla según que jdk o jre estemos usando.
opensuse,
jdk