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