在java中使用蓝牙的NoClassDefFoundError

时间:2017-02-17 12:14:27

标签: java bluetooth bluecove

我先前在这里问过一个问题:NoClassDefFoundError with bluecove's javax.microedition 但没有回应。

我正在尝试运行一些需要蓝牙的java代码(Server.java),所以我在C:\ Program Files \ Java中安装了bluecove-2.1.0.jar文件。

我使用javac -cp "C:\Program Files\Java\bluecove-2.1.0.jar";. Server.java编译代码并使用java Server -cp "C:\Program Files\Java\bluecove-2.1.0.jar"

运行代码

它成功编译,但是当我运行它时,我收到错误:

Error: A JNI error has occurred, please check your installation and try  again
Exception in thread "main" java.lang.NoClassDefFoundError: javax/microedition/io/Connection
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.privateGetMethodRecursive(Unknown Source)
    at java.lang.Class.getMethod0(Unknown Source)
    at java.lang.Class.getMethod(Unknown Source)
    at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.microedition.io.Connection
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 7 more

我出错的任何想法?

编辑:按照Minus的回答,为了解决后面的错误,我还需要使用我从http://snapshot.bluecove.org/distribution/download/2.1.1-SNAPSHOT/2.1.1-SNAPSHOT.63/下载的另一个.jar文件

2 个答案:

答案 0 :(得分:2)

问题是.dll没有正确加载。

该库应该包含一个.dll,它将保存在磁盘上并加载,也许程序无法将.dll保存到磁盘或无法读取。

提取.dll并关注原生图书馆位置上的bluecove installation instructions

例如:

创建目录c:\blue和目录blue\lib

放置这样的文件:

C:\blue\Sever.java
C:\blue\Sever.class
C:\blue\[bluecove_native_library].dll
C:\blue\lib\bluecove-2.1.0.jar

在c:\ blue

上打开cmd(命令提示符)

尝试像这样运行应用程序:

java -cp .;lib\bluecove-2.1.0.jar -Dbluecove.native.resource=false Server

这样,类路径中的Server.class和bluecove-2.1.0.jar以及路径中的DLL都有(因为在Windows上,当前dir在路径中)。

答案 1 :(得分:1)

将当前文件夹添加到类路径(。;),并确保您的代码位于 package-name 文件夹中。 因此,如果您的服务器具有包名称: 的 mypackage的 确保您的类代码位于 / mypackage 目录中 转到父文件夹 / mypackage 并致电:

java -cp"。; C:\ Program Files \ Java \ bluecove-2.1.0.jar" mypackage.Server