javax.usb.UsbException:找不到属性文件javax.usb.properties

我使用以下代码来获取连接到系统的usb设备的manufacturerCode。 我添加了jsr80-1.0.1 jar。 我收到以下错误javax.usb.UsbException:

找不到属性文件javax.usb.properties。

有什么建议么?

import java.io.UnsupportedEncodingException; import java.util.*; import javax.usb.*; public class USBListener { public static void main(String[] args) { try{ UsbServices services = UsbHostManager.getUsbServices(); UsbHub root = services.getRootUsbHub(); listDevices(root); } catch (Exception e) { System.out.println(e); } } public static void listDevices(UsbHub hub) throws UnsupportedEncodingException, UsbException { List devices = hub.getAttachedUsbDevices(); Iterator iterator = devices.iterator(); while(iterator.hasNext()) { UsbDevice device = (UsbDevice)iterator.next(); describe(device); if(device.isUsbHub()) { System.out.println("is hub"); } } } public static void describe(UsbDevice device) throws UnsupportedEncodingException, UsbException { UsbDeviceDescriptor descriptor = device.getUsbDeviceDescriptor(); byte manufacturerCode = descriptor.iManufacturer(); System.out.println("Manufacturer index: " + manufacturerCode); System.out.println("Manufacturer String: " + device.getString(manufacturerCode)); System.out.println("USB version: " + decodeBCD(descriptor.bcdUSB())); System.out.println("Maximum control packet size: " + descriptor.bMaxPacketSize0()); } public static String decodeBCD(short bcd) { int upper = (0xFF00 & bcd) >> 8; int middle = (0xF0 & bcd) >> 4; int lower = 0x0F & bcd; return upper + "." + middle + "." + lower; } } 

您需要在类路径上使用此文件。 来自文档:

javax.usb.properties文件是API实现加载器类所需的Java属性文件。 属性文件必须可以通过常规方式加载(即它必须位于CLASSPATH中),并且必须包含属性javax.usb.services。 必须定义此属性。 其值必须是实现接口javax.usb.UsbServices的类的完全限定类名。 该类将作为javax.usb的实现加载。

而且,如果你看到这个错误,你可能没有javax.usb实现:

你需要一个javax.usb实现; 该文件由所有javax.usb实现提供

请参见此处: http : //javax-usb.sourceforge.net/faq.html#what_is_properties_file