"Después del juego es antes del juego"
Sepp Herberger

viernes, 19 de diciembre de 2014

Cómo hacer funcionar jkiwi en amd64

Hace poco tuve que instalar la aplicación jkiwi en varias aulas para los ciclos formativos de peluquería y estética. En los Debian con arquitectura i386 no hubo mucho problema: bajé el paquete .deb de su página y la instalé con esta clase puppet:

class instala_jkiwi {

$version="0.9.5"
$paquete="jkiwi_${version}_ubuntu.deb"

file {"/var/cache/$paquete":
owner => root, group => root, mode => 755,
source => "puppet:///instala_jkiwi/$paquete",
notify => Exec["instala_jkiwi"]
}
exec { "instala_jkiwi":
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
command => "dpkg -i --force-confnew  --force-overwrite $paquete; apt-get -f -y install ",
cwd => "/var/cache",
unless => "dpkg -l | grep jkiwi | grep $version | grep ^ii",
require => File["/var/cache/$paquete"],
}

file {"/var/home/usuario/Desktop/jkiwi.desktop":
owner => usuario, group => usuario, mode => 755,
source => "puppet:///instala_jkiwi/jkiwi.desktop",
}
}

Cuando lo instalé en los Debian con arquitectura amd64 no hubo problemas hasta la hora de ejecutarlo. Al hacer doble click no hacía nada y al abrirlo desde terminal me daba el error:

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
at utils.GtkStockIconSWT.createImage(GtkStockIconSWT.java:120)

Un error enigmático, afortunadamente aquíaquí venía la solución, que consiste básicamente en:

  1. Bajar los fuentes de http://jkiwi.com/download/source/
  2. Descomprimirlos y editar el fichero src/utils/GtkStockIconSWT.java, reemplazando en las lineas 120, 121 y 128 (Integer) por (Long).
  3. Descargar de Internet un swt.jar de 64 bits según cuentan aquí
  4. Poner el swt.jar nuevo en src//lib/in_use/swt.jar
  5. Y recompilar:
cd src
javac -classpath ../lib/in_use/metadata-extractor.jar:../lib/in_use/swt.jar @classes

Podemos probarlo con:

java -classpath ../lib/in_use/metadata-extractor.jar:../lib/in_use/swt.jar:. core.Loader

Y si funciona, creamos el jkiwi.jar nuevo con:

jar -cfm ../bin/jkiwi.jar MANIFEST.MF *

Para ahorrar trabajo pongo el swt.jar y el jkiwi.jar ya modificados y preparados por mí para funcionar con amd64:

Una vez descargados en, por ejemplo, /root sólo hay que sobreescribir con ellos los instalados con el paquete:

cd /usr/share/jkiwi/
mv /root/jkiwi.jar bin/jkiwi.jar
mv /root/swt.jar lib/in_use/swt.jar

Y ya estará funcionando para que nos riamos de la gente poniéndoles pelos y maquillajes divertidos. Empieza probando por ti mismo, claro está.

No hay comentarios:

Publicar un comentario