1

我用 JavaFX GUI 编写了一个演示应用程序,它必须从 USB 设备读取串行和某种硬件 ID。我正在使用 javax.usb (usb4java) 库

<dependency>
    <groupId>org.usb4java</groupId>
    <artifactId>usb4java-javax</artifactId>
    <version>1.2.0</version>
</dependency>

访问和声明设备:

UsbConfiguration configuration = imuniqe.getActiveUsbConfiguration();
UsbInterface iface = (UsbInterface) configuration.getUsbInterfaces().get(0); // FIXME

iface.claim(new UsbInterfacePolicy() {
    @Override
    public boolean forceClaim(UsbInterface arg0) {
        return true;
    }
});

如果我用 sudo 启动程序,在我的 Ubuntu 14.04 系统上运行该应用程序就可以了。

但是如果我在带有 Java 8 的 MacBook Pro (OS X 10.9.5) 上运行它,我会得到以下异常:

javax.usb.UsbPlatformException: USB error 3: Unable to claim interface: Access denied (insufficient permissions)
at
org.usb4java.javax.ExceptionUtils.createPlatformException(ExceptionUtils.java:39)
at
org.usb4java.javax.AbstractDevice.claimInterface(AbstractDevice.java:430)
at 
org.usb4java.javax.Interface.claim(Interface.java:102)
...

即使使用 sudo 运行应用程序也不会改变其行为。

我错过了什么重要的东西吗?有什么技巧可以让我的应用程序在 OS X 上声明 USB 接口吗?

4

0 回答 0