2014-04-17 10 views
6

Sto provando a compilare/eseguire un programma che utilizza le librerie BlueCove su un BeagleBone Black con Ubuntu. Tuttavia continuo a ricevere questo errore durante l'esecuzione:Biblioteca nativa bluecove_arm non disponibile

Native Library bluecove_arm not available 
javax.bluetooth.BluetoothStateException: BlueCove library bluecove not available 
at com.intel.bluetooth.BlueCoveImpl.loadNativeLibraries(BlueCoveImpl.java:381) 
at com.intel.bluetooth.BlueCoveImpl.detectStack(BlueCoveImpl.java:429) 
at com.intel.bluetooth.BlueCoveImpl.access$500(BlueCoveImpl.java:65) 
at com.intel.bluetooth.BlueCoveImpl$1.run(BlueCoveImpl.java:1020) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.intel.bluetooth.BlueCoveImpl.detectStackPrivileged(BlueCoveImpl.java:1018) 
at com.intel.bluetooth.BlueCoveImpl.getBluetoothStack(BlueCoveImpl.java:1011) 
at javax.bluetooth.LocalDevice.getLocalDeviceInstance(LocalDevice.java:75) 
at javax.bluetooth.LocalDevice.getLocalDevice(LocalDevice.java:95) 
at edit.rit.ce.whud.DataServer.bluetoothHandler(DataServer.java:16) 
at edit.rit.ce.whud.GUI.main(GUI.java:153) 

So che questo non è un problema con il codice, dato che posso eseguire il codice con le librerie Bluecove su un computer Linux x64 bit in esecuzione Mint (che si basa fuori da Ubuntu). Ho cercato online diverse soluzioni e non riesco a trovarne una che risolva il mio problema. Ho già ricompilazione le Bluecove-GPL 2.1.0 librerie per ARM utilizzando questo metodo

http://www.raspberrypi.org/forums/viewtopic.php?f=81&t=58758

e hanno cercato compilazione/esecuzione del codice sia attraverso il terminale e NetBeans IDE.

C'è qualche altro passaggio che devo fare per farlo funzionare? Perché continua a dire che la libreria Bluecove non è disponibile anche dopo che l'ho ricompilata per ARM?

risposta

3

Questo è per riferimento futuro per chi viene su questa domanda:

Partenza the answer fornito da MyRevel corso sul forum Raspberry Pi. Ha funzionato come un fascino! :)

Al fine di diffondere una soluzione di lavoro è facile da seguire, e poiché questa domanda è il primo risultato che appare in google, sto ripubblicando i passaggi della risposta di cui sopra (ho apportato alcune lievi modifiche ma l'effetto è lo stesso):

Download bluecove-2.1.0.jar e bluecove-gpl-2.1.0-sources.tar.gz da http://code.google.com/p/bluecove/downloads/list o http://sourceforge.net/projects/bluecove/files/BlueCove/2.1.0/.

Sul RPI, utilizzando il terminale o SSH:

creare un luogo per fare la compilazione ed estrarre i file di origine:

`mkdir -p ~/temp/bluecove/target/` 
`cd ~/temp` 
`tar xf bluecove-gpl-2.1.0-sources.tar.gz` 
`mv ~/Downloads/bluecove-2.1.0.jar ~/temp/bluecove/target/bluecove-2.1.0.jar` 

Ora Temp cartella contiene due cartelle: Bluecove-gpl-2.1 .0 e bluecove.

Modifica build.xml:

nano ~/temp/bluecove-gpl-2.1.0/build.xml 

Delete text '-SNAPSHOT' on line 12 of build.xml: 
from: <property name="product_version" value="2.1.0-SNAPSHOT"/> 
to: <property name="product_version" value="2.1.0"/> 

Save file: `Ctrl+X` then `Y` and `Enter`. 

installare i pacchetti bluetooth e pacchetti necessari per la compilazione:

sudo apt-get update && apt-get upgrade && apt-get autoremove 
sudo apt-get install bluetooth bluez-utils blueman 
sudo apt-get install libbluetooth-dev # BlueZ development package needed for compilation later 
sudo apt-get install ant 

dongle Bluetooth Collegare e verificare se Bluetooth OK:

/etc/init.d/bluetooth status # check to see whether the bluetooth is live 
hcitool scan     # show any devices in range of the dongle 
sudo service bluetooth start # start the bluetooth service if required 

compilazione Inizio :

cd ~/temp/bluecove-gpl-2.1.0 
ant all 

quando compilato con successo è possibile trovare il barattolo gpl richiesto:

~/temp/bluecove-gpl-2.1.0/target/bluecove-gpl-2.1.0.jar 

Infine ...

spostare il file generato, bluecove-gpl-2.1.0.jar, insieme con il file scaricato, bluecove-2.1.0.jar, nella vostra java percorso di generazione librerie directory del programma di sviluppo Java.

esegue il programma Java con le librerie Bluecove può essere fatto in questo modo:

java -cp /path/to/MyJavaProgram.jar:/path/to/bluecove_libs/ myjavaprogram.MyJavaProgram 

L'interruttore -cp ci permette di specificare un elenco di file e directory da includere. Ogni directory e file è delimitata da due punti (:).

In questo caso vogliamo includere MyJavaProgram.jar e tutti i file nella directory bluecove_libs.

Il parametro finale indica a java quale pacchetto e classe main() devono essere eseguiti da.

Nota che /path/to/bluecove_libs/ conterrà i seguenti file:

  • bluecove-gpl-2.1.0.jar -> il file abbiamo compilato sopra
  • bluecove-2.1.0.jar -> il file che abbiamo scaricato dal web
+0

Ti importa di elaborare su quale parte non ha funzionato e quali errori avete ottenuto? Almeno in questo modo ho la possibilità di migliorare la risposta per gli altri. – br3nt

+0

Ovviamente. L'errore originale non è stato risolto affatto. Ho fatto tutti i passaggi e ho importato il nuovo barattolo nel mio progetto. Poi ho generato un jar eseguibile per il mio progetto, contiene tutte le librerie, compresi i vasi bluecove e classpath è impostato correttamente in MANIFEST. Ho provato a eseguire il progetto utilizzando java -cp come indicato e lo stesso risultato. –

0

Chi "C'è qualche altro passo che devo fare per farlo funzionare? Perché continua a dire che la libreria Bluecove non è disponibile anche dopo averlo ricompilato per ARM? "

Ho trovato lo stesso problema quando ho provato a compilare sotto Ubuntu. Il motivo era nel compilatore gcc. Ha diversi parametri di default per diverse versioni.

ho dovuto fare la seguente modifica di build.xml per Bluecove-gpl-2.1.1-SNAPSHOT.jar

1) name = < proprietà »bluecove.native.linker.options» value = » -nodefaultlibs «/> nome

=>

< proprietà =» bluecove.native.linker.options »value =» »/>

2) < valore arg =» - Wl, - così nome, libbluecove $ {} library_sufix - $ {} product_version »/>

=>

< valore arg =» - Wl, -no-come-necessaria, -soname, libbluecove $ {} library_sufix - $ {product_version} »/>

3) < valore arg =» - L $ {librerie-universal} »/>

< valore arg =» - lbluetooth »/>

< linea arg = »$ {bluecove.native.linker.Opzioni} »/>

< valore arg =» - Wl, -soname, libbluecove $ {} library_sufix - $ {} product_version »/>

=>

< valore arg =» - L $ {libs-universal} »/>

< linea arg =» $ {} bluecove.native.linker.options »/>

< valore arg =» - Wl, -no-come-necessaria, -soname, libbluecove $ {library_sufix} - $ {prodotto _version} »/>

< valore arg =» - lbluetooth »/>

http://privateblog.info/raspberry-pi-kak-rabotat-s-bluetooth-na-java/