java.lang.UnsatisfiedLinkError : no usbJava in java. 库路径

标签 java intellij-idea arduino rxtx

我正在尝试使用 Java 和 OSx yosemite 连接到我的 arduino,但出现以下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no usbJava in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1865)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at ch.ntb.usb.LibusbJava.<clinit>(LibusbJava.java:366)
    at ch.ntb.usb.USB.init(USB.java:315)
    at org.zu.ardulink.connection.usb.DigisparkUSBConnection.getPortList(DigisparkUSBConnection.java:116)
    at org.zu.ardulink.Link.getPortList(Link.java:217)
    at BlinkLED.main(BlinkLED.java:36)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

这是我正在执行的代码:

public static void main(String[] args) {
        try {
            Link link = Link.getDefaultInstance();
            link = getDigisparkConnection(); // Comment this row if you use just the default connection

            List<String> portList = link.getPortList();
            if(portList != null && portList.size() > 0) {
                String port = portList.get(0);
                System.out.println("Connecting on port: " + port);
                boolean connected = link.connect(port);
                System.out.println("Connected:" + connected);
                Thread.sleep(2000);
                int power = IProtocol.HIGH;
                while(true) {
                    System.out.println("Send power:" + power);
                    link.sendPowerPinSwitch(2, power);
                    if(power == IProtocol.HIGH) {
                        power = IProtocol.LOW;
                    } else {
                        power = IProtocol.HIGH;
                    }
                    Thread.sleep(2000);
                }
            } else {
                System.out.println("No port found!");
            }

        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }

    private static Link getDigisparkConnection() {
        Set<String> protocolNames = ProtocolHandler.getInstalledProtocolImplementationNames();
        SimpleBinaryProtocol protocol = new SimpleBinaryProtocol();
        if(!protocolNames.contains(SimpleBinaryProtocol.NAME)) {
            ProtocolHandler.installProtocolImplementation(protocol);
        }
        return Link.createInstance("digisparkConnection", SimpleBinaryProtocol.NAME, new DigisparkUSBConnection("digisparkConnection", protocol.getIncomingMessageDivider()));
    }

当我评论第 4 行 (link = getDigisparkConnection();) 时,出现以下错误:

java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver
Exception in thread "main" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1865)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
    at org.zu.ardulink.connection.serial.SerialConnection.connect(SerialConnection.java:161)
    at org.zu.ardulink.connection.serial.SerialConnection.connect(SerialConnection.java:139)
    at org.zu.ardulink.connection.serial.SerialConnection.connect(SerialConnection.java:227)
    at org.zu.ardulink.Link.connect(Link.java:187)
    at BlinkLED.main(BlinkLED.java:37)

这与原生 rxtx 库有关,但我无法解决它。我使用 IntelliJ IDEA 作为 IDE。寻找这个错误,我只找到了 linux 的答案,但没有找到关于 OSX 的答案。 谢谢

最佳答案

可能的解决方案:

  1. 检查您是否拥有最新的稳定 版本中的所有库。

  2. 检查您的程序是否有权进行串行通信。如果没有,请使用 chmod 命令。

关于java.lang.UnsatisfiedLinkError : no usbJava in java. 库路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30177063/

相关文章:

c++ - 使用 Arduino 进行 LCD 编程

c# - SerialPort.ReadLine() 不从 Arduino 发送的 USB COM 端口读取数据

java - 为什么用 Jackson 的 @JsonFormat 注释的 java.sql.Timestamp 字段中的小时错误?

java - 与正常的异常处理相比,Hystrix 有哪些优势?

java - 如何在 IntelliJ 中将 jar 添加到类路径?

scala - 如何阻止 Intellij 创建 src/main/java 和 src/main/scala-x 文件夹?

python - 在从传感器读取数据而不打印从传感器读取的数据时,While 循环无法立即工作?

Java - 为什么 DualPivotQuicksort 有重复的代码?

java - 如何从 Selenium Webdriver 的属性文件中选择随机值?

java - 为什么即使更改 -xmx VM 选项后,异常 "java.lang.OutOfMemoryError: Java heap space"仍然出现?