我已经用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接口?