Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用RXTX运行程序时出错_Java_Api_Serial Port_Rxtx - Fatal编程技术网

Java 使用RXTX运行程序时出错

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"

我在应用程序中使用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" 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