UnsatisfiedLinkError 在 Eclipse 中使用 Processing 中的串口

UnsatisfiedLinkError using Serial port from Processing in Eclipse

我有一个处理程序,应该从 arduino uno 创建的串口读取数据。我让程序在 Processing 中完美运行,但在 Eclipse 中却不行。我将 core.jar serial.jarjssc.jar 添加到我的 java 项目的构建路径中,但我仍然在使用 Serial.list()[0].

调用端口时遇到错误

我在这里看到过类似的问题,但 none 提供了有用的答案。我不知道我是否遗漏了什么或需要将不同的 jar 文件导入到我的构建路径中。

import processing.core.PApplet;
import processing.serial.*; 

public class Processing extends PApplet {

    public Processing() {
        // TODO Auto-generated constructor stub
    }

    public static void main(String[] args) {
        PApplet.main("Processing");
    } 

    Serial myPort;
    String val;

    public void setup() {
        myPort = new Serial(this, Serial.list()[0], 9600);
    }

    public void draw() {
        if ( myPort.available() > 0) {
            val = myPort.readString();
        } 

        if (val != null) {
            println(val);
        }

        delay(250);
    }
}    

错误信息:

java.lang.UnsatisfiedLinkError: jssc.SerialNativeInterface.getSerialPortNames()[Ljava/lang/String;
at jssc.SerialNativeInterface.getSerialPortNames(Native Method)
at jssc.SerialPortList.getWindowsPortNames(SerialPortList.java:309)
at jssc.SerialPortList.getPortNames(SerialPortList.java:298)
at jssc.SerialPortList.getPortNames(SerialPortList.java:182)
at processing.serial.Serial.list(Unknown Source)
at Performance.Processing.setup(Processing.java:44)
at processing.core.PApplet.handleDraw(PApplet.java:2425)
at processing.awt.PSurfaceAWT.callDraw(PSurfaceAWT.java:1547)
at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:313)

您已将 jssc.jar 添加到 Java 构建路径 这很好,但是 jssc 使用本机 c++ 库,您还需要参考该库:

  1. 来自 Java 构建路径 > 部分
  2. 使用箭头展开jssc.jar和select原生库位置
  3. 单击右侧的 编辑... 和 select 包含 OS 的本机 c++ 库的文件夹(在我的例子中是macosx 现在)

应用更改后,link 错误将得到满足。