LibUsb声称接口访问被拒绝Java

我希望能够从USB计步器读取数据。 我在Java中尝试这个,我正在使用LibUsb和Usb4Java库。 我似乎无法声称usb管道或类似的东西。

我正在使用的代码:

final Context context = new Context(); int result = LibUsb.init(context); if (result < 0) { throw new LibUsbException("Unable to initialize libusb", result); } DeviceHandle handle = LibUsb.openDeviceWithVidPid(context, vid, pid); if (handle != null) { Device d = LibUsb.getDevice(handle); int res = LibUsb.claimInterface(handle, 0); 

Int res返回’-3’,即’LIBUSB_ERROR_ACCESS’

该设备已找到但不可索赔。 USB设备只有1个接口。

任何帮助,将不胜感激!

LibUsb需要root权限才能访问usb设备。 在Mac中,管理员帐户不足以访问USB设备。 你必须以root身份运行它(admin和root不一样)。 当我在我的Mac(OSX EL Capitan)上使用它时,我遇到了同样的问题,我认为它的设备或库的问题不能正常工作,但后来我意识到它的许可问题。 猜猜你的程序名是myDevicesAccessor然后像这样运行它。

 sudo ./myDevicesAccessor 

如果你尝试的话

 ./myDevicesAccessor 

它不会起作用。

它可能与错误权限导致的问题有关。
以下是某人在类似问题中发表的有趣评论。
他们建议通过添加以下行来编辑文件/etc/udev/rules.d/90-usbpermission.rules

 SUBSYSTEM==“usb”,GROUP=“users”,MODE=“0666” 

希望它有所帮助,它主要取决于主机系统。


另一个有趣的线索就是这个 。
有人通过不主张接口的所有权来解决这个问题。
我想这也适用于你的情况,至少作为一种解决方法,直到找到确定的解决方案。