NoClassDefFoundError 在 java 中使用蓝牙
NoClassDefFoundError using bluetooth in java
我早些时候在这里问了一个问题:NoClassDefFoundError with bluecove's javax.microedition
但没有得到回应。
我正在尝试 运行 一些需要蓝牙的 java 代码 (Server.java),所以我在 C:\程序 Files\Java.
我用 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 文件
问题是 .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 当前目录在路径中)。
将当前文件夹添加到 class 路径 (.;) 并确保您的代码位于 package-name 文件夹。
所以如果你的服务器有一个包名:
我的包
确保您的 class 代码位于 /mypackage 目录中
而不是转到 /mypackage 的父文件夹并调用:
java -cp ".;C:\Program Files\Java\bluecove-2.1.0.jar" mypackage.Server
我早些时候在这里问了一个问题:NoClassDefFoundError with bluecove's javax.microedition 但没有得到回应。
我正在尝试 运行 一些需要蓝牙的 java 代码 (Server.java),所以我在 C:\程序 Files\Java.
我用 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 文件问题是 .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 当前目录在路径中)。
将当前文件夹添加到 class 路径 (.;) 并确保您的代码位于 package-name 文件夹。 所以如果你的服务器有一个包名: 我的包 确保您的 class 代码位于 /mypackage 目录中 而不是转到 /mypackage 的父文件夹并调用:
java -cp ".;C:\Program Files\Java\bluecove-2.1.0.jar" mypackage.Server