我先前在这里问过一个问题: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文件答案 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