8 luglio 2011

Usare libreria RXTX su Snow Leopard

Non so per quale motivo, ma è un periodo che devo continuamente penare per far funzionare su OS X quello che mi serve per i miei progetti e siccome so cosa significhi passare ore alla ricerca di qualche blogger di buon cuore che abbia condiviso con il mondo la soluzione, non posso fare a meno di scrivere un post per ogni nuova esperienza acquisita. Questa volta parliamo della libreria Java RXTX per la comunicazione con porte seriali.

Volendo passare a qualcosa di più della semplice accensione temporizzata di LED tramite Arduino, ci si imbatte subito nella comunicazione tramite porta seriale che, lato microcontrollore, è gestita egreggiamente dalle librerie standard della piattaforma mentre, lato computer, è più o meno banale a seconda del linguaggio scelto.
Prevedendo una possibile integrazione con alcune funzionalità offerte dalla libreria WiiRemoteJ ho pensato bene di utilizzare Java e quindi la libreria RXTX che dovrebbe sostituisce le funzionalità delle Java Communication API. Ovviamente essendo su OS X 10.6 non poteva di certo andare tutto liscio e di fatti mi ritrovavo con il seguente errore, non appena cercavo di invocare la libreria:
java.lang.UnsatisfiedLinkError: /Library/Java/Extensions/librxtxSerial.jnilib: no suitable image found. Did find: /Library/Java/Extensions/librxtxSerial.jnilib: no matching architecture in universal wrapper thrown while loading gnu.io.RXTXCommDriver
Se avete scaricato dal sito ufficiale della libreria l'ultima versione, sapete che una volta estratta la cartella, vi ritroverete con due file: librxtxSerial.jnilib e RXTXcomm.jar. Il primo (.jnilib) va inserito in /Library/Java/Extensions/ mentre il secondo va inserito nel build path del vostro progetto Java.
Il problema però è proprio il file .jnilib che è stato compilato per 32bit ma non per 64bit (e ti pareva -_-). Per risolvere la questione potete scaricare dal sito ufficiale i sorgenti e compilarli per la vostra macchina oppure, se siete pigri, potete trovare il file già compilato sul sito di Robert Harder che ha gentilmente pensato di mettere a disposizione la versione per 64bit, qui.
A questo punto basta sostituire il file originale con quello scaricato dal blog precedentemente menzionato e voilà, il vostro codice funzionerà come per magia.

Spero che anche questa volta vi possa risultare utile questa piccola guida in italiano. Se vi è piaciuta (o se non vi è piaciuta), fatemelo sapere nei commenti. ^_-

P.s. piccola nota personale: mi chiedo come sia possibile che nonostante Snow Leopard sia in giro da qualche anno ormai, molte librerie Java non siano state aggiornate per 64bit. Con l'arrivo di Lion, cosa succederà?

4 commenti:

  1. Brava! E fammi sapere se è andato tutto come previsto ;)

    RispondiElimina
  2. mi apprestavo anche io a scimunirmi per risolvere il problema, grazie mille per avermi fatto risparmiare almeno un'ora :D

    RispondiElimina
  3. Non c'è di che!
    Dopo averne perse un paio, ho pensato che anche altri avrebbero potuto trovarsi nella stessa situazione ;)

    RispondiElimina