【问题标题】:javax.usb.UsbException: Properties file javax.usb.properties not foundjavax.usb.UsbException:找不到属性文件 javax.usb.properties
【发布时间】:2011-08-02 14:07:02
【问题描述】:

我使用以下代码获取连接到系统的 USB 设备的制造商代码。我添加了 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;
        }
    }

【问题讨论】:

    标签: java usb


    【解决方案1】:

    您的类路径中需要此文件。来自文档:

    javax.usb.properties 文件是一个 Java 属性文件,它是 API 实现加载器类所需的。属性文件 必须可以通过正常方式加载(即它必须在 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

    【讨论】:

    • 感谢理查德的回答。我正在使用窗户。哪里可以得到这个属性文件。
    • @Jack - 正如文档所说,该文件与 javax.usb 的实现捆绑在一起
    • @Richard -- 你的意思是我需要添加 javax.usb jar。当我搜索那个罐子时,我发现只有 jsr80-1.0.1 罐子。我已经在我的构建路径中添加了。
    猜你喜欢
    • 2015-04-07
    • 2011-11-03
    • 2019-05-10
    • 1970-01-01
    • 2014-07-30
    • 2023-02-01
    • 2014-07-29
    • 2013-11-15
    • 2012-08-27
    相关资源
    最近更新 更多