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

时间:2011-08-02 14:07:02

标签: java usb

我使用以下代码来获取连接到系统的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;
        }
    }

1 个答案:

答案 0 :(得分:2)

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

  

javax.usb.properties文件是一个Java属性文件   API实现加载器类所需的。属性文件   必须可以通过正常方式加载(即它必须在CLASSPATH中)   它必须包含属性javax.usb.services。这个性质   必须定义。它的值必须是a的完全限定类名   实现接口javax.usb.UsbServices的类。这个班   将作为javax.usb的实现加载。

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

  

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

见这里:http://javax-usb.sourceforge.net/faq.html#what_is_properties_file