我在编写简单的测试程序时遇到错误:
package Xbee;
import com.rapplogic.xbee.api.XBee;
import com.rapplogic.xbee.api.XBeeException;
public class XbeeTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
XBee xbee = new XBee();
try {
xbee.open("COM22", 9600);
} catch (XBeeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我得到以下信息:
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class gnu.io.RXTXVersion
at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:123)
at com.rapplogic.xbee.RxTxSerialComm.openSerialPort(RxTxSerialComm.java:71)
at com.rapplogic.xbee.RxTxSerialComm.openSerialPort(RxTxSerialComm.java:61)
at com.rapplogic.xbee.api.XBee.open(XBee.java:140)
at Xbee.XbeeTest.main(XbeeTest.java:14)
整个问题是它无法初始化 gnu.io.RXTXversion 类,该类是 rtxtcomm.jar 的一个 prt,我已将其包含在 Maven 依赖项中:
<dependency>
<groupId>org.bidib.jbidib.org.qbang.rxtx</groupId>
<artifactId>rxtxcomm</artifactId>
<version>2.2</version>
</dependency>
有什么想法吗?谢谢。
最佳答案
正如我之前在评论中提到的,您还需要 native 库才能使其工作。将其放入 ${JRE_HOME}/lib/i386
好文章:http://pharos.ece.utexas.edu/wiki/index.php/How_to_Access_Your_Serial_Port_using_Java
并引用文章:
$ wget http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip
Unzip the rxtx archive and install it. The following commands assume your JVM is located in /usr/lib/jvm/java-6-openjdk/ and that you are using a 32-bit x86 computer. You will need to slightly modify these commands if you have a different JVM or system architecture (i.e., 64-bit).
$ sudo apt-get install zip
$ unzip rxtx-2.1-7-bins-r2.zip
$ cd rxtx-2.1-7-bins-r2
$ sudo cp RXTXcomm.jar /usr/lib/jvm/java-6-openjdk/jre/lib/ext/
$ sudo cp Linux/i686-unknown-linux-gnu/librxtx* /usr/lib/jvm/java-6-openjdk/jre/lib/i386/
关于java - NoClassDefFoundError - 无法初始化类...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22164784/