本机库bluecove_arm不可用

6

我正在尝试在运行Ubuntu的BeagleBone Black上编译/运行使用BlueCove库的程序。但是当我运行时,我一直收到以下错误:

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)

我知道这不是代码问题,因为我可以在运行Mint(基于Ubuntu的)的x64位Linux计算机上使用BlueCove库运行代码。我已经在线搜索了几个解决方案,但没有找到解决我的问题的方法。我已经使用此方法重新编译了bluecove-gpl-2.1.0库,以便在ARM上使用。

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

我已经尝试通过终端和NetBeans IDE编译/运行代码。是否还有其他步骤需要进行才能使其正常工作?为什么即使我已经为ARM重新编译了Bluecove库,它仍然会说找不到该库?

2个回答

4
这是为了日后任何遇到此问题的人提供参考: 请查看树莓派论坛上MyRevel提供的答案。它非常有效! :) 为了传播易于跟随的工作解决方案,并且因为这个问题是谷歌搜索结果中出现的第一个,我重新发布了上述答案的步骤(我进行了一些微小的修改,但效果相同)。
http://code.google.com/p/bluecove/downloads/listhttp://sourceforge.net/projects/bluecove/files/BlueCove/2.1.0/ 下载 bluecove-2.1.0.jarbluecove-gpl-2.1.0-sources.tar.gz
在树莓派上,使用终端或SSH:
创建一个编译的目录并提取源文件:
`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`

现在文件夹temp包含两个文件夹:bluecove-gpl-2.1.0和bluecove。
修改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`.

安装蓝牙软件包和编译所需的软件包:
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

连接蓝牙适配器并测试蓝牙是否正常:

/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

开始编译:

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

当成功编译后,您可以在以下位置找到所需的GPL JAR文件:

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

最后...

将生成的文件bluecove-gpl-2.1.0.jar与下载的文件bluecove-2.1.0.jar一起移动到Java开发程序的构建路径库目录中。

使用bluecove库运行Java程序可以按照以下方式进行:

java  -cp  /path/to/MyJavaProgram.jar:/path/to/bluecove_libs/  myjavaprogram.MyJavaProgram
-cp开关允许我们指定一个包含文件和目录的列表。每个目录和文件都用冒号(:)分隔。
在这种情况下,我们想要包括MyJavaProgram.jarbluecove_libs目录中的所有文件。
最后一个参数告诉Java应该从哪个包和类的main()开始执行。
请注意/path/to/bluecove_libs/将包含以下文件:
  • bluecove-gpl-2.1.0.jar -> 上面我们编译的文件
  • bluecove-2.1.0.jar -> 我们从Web上下载的文件

1
你能详细说明哪个部分出了问题,以及你遇到了什么错误吗?这样至少我有机会为其他人改进答案。 - br3nt
当然。原始错误根本没有解决。我执行了所有步骤并将新的jar导入到我的项目中。然后我为我的项目生成了一个可执行的jar,它包含所有库,包括两个bluecove jar,并且在MANIFEST中正确设置了classpath。我尝试按照指示使用java -cp运行项目,但结果相同。 - Paulo Pedroso

0

关于“我还需要做其他步骤才能使这个工作吗?为什么即使在为ARM重新编译后,它仍然提示Bluecove库不可用?”

我在Ubuntu下尝试编译时遇到了相同的问题。原因是gcc编译器具有不同版本的默认参数。

我不得不对bluecove-gpl-2.1.1-SNAPSHOT.jar中的build.xml进行以下更改:

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

=>

<property name=»bluecove.native.linker.options» value=»»/>

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

=>

<arg value=»-Wl,—no-as-needed,-soname,libbluecove${library_sufix}-${product_version}»/>

3) <arg value=»-L${libs-universal}»/>

<arg value=»-lbluetooth»/>

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

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

=>

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

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

<arg value=»-Wl,—no-as-needed,-soname,libbluecove${library_sufix}-${product_version}»/>

<arg value=»-lbluetooth»/>

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接