Java 使用RXTX运行程序时出错
我在应用程序中使用RXTX(gnu.io.*;)进行串行端口通信,我已下载了库并添加了支持文件,如下所示:Java 使用RXTX运行程序时出错,java,api,serial-port,rxtx,Java,Api,Serial Port,Rxtx,我在应用程序中使用RXTX(gnu.io.*;)进行串行端口通信,我已下载了库并添加了支持文件,如下所示: C:\>javac SimpleWrite.java C:\>java SimpleWrite java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver Exception in thread "Thread-0"
C:\>javac SimpleWrite.java
C:\>java SimpleWrite
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while
loading gnu.io.RXTXCommDriver
Exception in thread "Thread-0" java.lang.UnsatisfiedLinkError: no rxtxSerial in
java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
at SerialConnection.openConnection(SerialConnection.java:71)
at Sender.send(Sender.java:46)
at SMSClient.run(SMSClient.java:39)
at java.lang.Thread.run(Unknown Source)
C:\ProgramFiles\Java\jdk1.8.0\u 25\jre\bin中复制了rxtxParallel.dll
和rxtxSerial.dll
C:\ProgramFiles\Java\jdk1.8.0\u 25\jre\lib\ext中复制了RXTXcomm.jar
import gnu.io.*;
import java.io.*;
import java.util.*;
public class SimpleWrite implements Runnable, SerialPortEventListener {
public void run() {
}
static Enumeration portList;
static CommPortIdentifier portId;
static String messageString = "AAA";
static char ch = '"';
static String dest = ch + "XXXXXXXXXXX" + ch; // 11 Digit Mobile Number.
static InputStream inputStream;
static SerialPort serialPort;
static OutputStream outputStream;
public void serialEvent(SerialPortEvent event) {
switch (event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE: {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
try {
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.err.println("Error while reading Port " + e);
}
break;
}
} //switch
}
public SimpleWrite(SerialPort serial) {
try {
inputStream = serial.getInputStream();
try {
serial.addEventListener(this);
} catch (TooManyListenersException e) {
System.out.println("Exception in Adding Listener" + e);
}
serial.notifyOnDataAvailable(true);
} catch (Exception ex) {
System.out.println("Exception in getting InputStream" + ex);
}
}
public static void main(String[] args) {
String line1 = "AT+CSMS=1\r\n";
String line2 = "AT+CMGS=" + dest + "\r\n";
String line3 = messageString + "\r\n";
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
if (portId.getName().equals("COM3")) {
System.out.println("SMS Sending....Port Found");
try {
serialPort = (SerialPort) portId.open("SimpleWriteApp", 2000);
SimpleWrite wr = new SimpleWrite(serialPort);
} catch (PortInUseException e) {
System.out.println("Port In Use " + e);
}
try {
outputStream = serialPort.getOutputStream();
} catch (IOException e) {
System.out.println("Error writing to output stream " + e);
}
try {
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {
}
try {
outputStream.write(line1.getBytes());
outputStream.write(line1.getBytes());
outputStream.write(line2.getBytes());
outputStream.write(line3.getBytes());
outputStream.write(26);
outputStream.flush();
} catch (Exception e) {
System.out.println("Error writing message " + e);
}
}
}
}
}
/**
* show text in the text window
*
* @param Text text string to show on the display
*/
public static void showText(String Text) {
System.out.println(Text);
}
}
但我在运行应用程序时遇到如下错误:
C:\>javac SimpleWrite.java
C:\>java SimpleWrite
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while
loading gnu.io.RXTXCommDriver
Exception in thread "Thread-0" java.lang.UnsatisfiedLinkError: no rxtxSerial in
java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
at SerialConnection.openConnection(SerialConnection.java:71)
at Sender.send(Sender.java:46)
at SMSClient.run(SMSClient.java:39)
at java.lang.Thread.run(Unknown Source)
C:\>javac SimpleWrite.java
C:\>JavaSimpleWrite
java.lang.UnsatisfiedLinkError:运行时在java.library.path中未引发rxtxSerial
加载gnu.io.RXTXCommDriver
线程“thread-0”java.lang.UnsatifiedLinkError中出现异常:中没有rxtxSerial
java.library.path
位于java.lang.ClassLoader.loadLibrary(未知源)
位于java.lang.Runtime.loadLibrary0(未知源)
位于java.lang.System.loadLibrary(未知源)
位于gnu.io.CommPortIdentifier。(CommPortIdentifier.java:83)
在SerialConnection.openConnection(SerialConnection.java:71)
at Sender.send(Sender.java:46)
运行(SMSClient.java:39)
位于java.lang.Thread.run(未知源)
我已经检查过了,但是显示的所有解决方案都使用
IDE
s。如何解决这个问题?请引导我,我是新手 如果您是从IDE运行程序,请确保将项目的java平台设置为您复制的库,即C:\program Files\java\jdk1.8.0\u 25\
因为IDE附带了默认的java平台&当您运行项目时,它使用默认的java平台
您可以在project的“属性”对话框中更改项目使用的平台。伙计,我没有使用IDE。请帮助我如何在没有IDE的情况下解决这个问题。我喜欢CMD,我不喜欢IDEsso,我假设您的JDK安装在C:\Program Files\Java\jdk1.8.0\U 25\上。确保JAVA_主页设置为C:\Program Files\JAVA\jdk1.8.0_25\。每当您通过java.exe执行java程序时,请确保它指向%java\u HOME\bin\java.exe。或者,在命令行上发出java.exe时,尝试手动设置java.library.path。例子。java.exe YourJavaClass-Djava.library.path=“path/to/librxtx/installed/directory”我的RXTXcomm.jar路径是C:\ProgramFiles\java\jdk1.8.0\u 25\jre\lib\ext,我使用命令java SimpleWrite运行。你能告诉我该如何运行这个程序吗?请帮帮我,伙计!!嗨,试试这个。java-cp“C:/ProgramFiles/java/jdk1.8.0_25/jre/lib/ext/RXTXcomm.jar;”-Djava.library.path=“C:/ProgramFiles/java/jdk1.8.0_25/jre/bin”SimpleWrite