usb4 java - getSerialNumberString () выдает исключение NegativeArraySizeException - PullRequest
0 голосов
/ 21 июня 2020

У меня есть следующий код Java, который использует usb4 java -javax:

String serialNumber = null;
try {
    serialNumber = usbDevice.getSerialNumberString();
} catch (UsbException | UnsupportedEncodingException e) {
    Logger.fatal("An error (", e, ") occurred while getting the device serial number.");
}

Я ожидаю, что этот код получит серийный номер UsbDevice в виде строки, однако он просто выдает следующее исключение, когда я пытаюсь запустить его:

Exception in thread "main" java.lang.NegativeArraySizeException
    at org.usb4java.javax.descriptors.SimpleUsbStringDescriptor.<init>(SimpleUsbStringDescriptor.java:43)
    at org.usb4java.javax.AbstractDevice.getUsbStringDescriptor(AbstractDevice.java:519)
    at org.usb4java.javax.AbstractDevice.getString(AbstractDevice.java:526)
    at org.usb4java.javax.AbstractDevice.getSerialNumberString(AbstractDevice.java:314)
    at wtf.lpc.checkm8.AppleDevice.<init>(AppleDevice.java:23)
    at wtf.lpc.checkm8.AppleDevice.findDevice(AppleDevice.java:44)
    at wtf.lpc.checkm8.AppleDevice.findDevice(AppleDevice.java:42)
    at wtf.lpc.checkm8.AppleDevice.findDevice(AppleDevice.java:42)
    at wtf.lpc.checkm8.AppleDevice.waitForDevice(AppleDevice.java:55)
    at wtf.lpc.checkm8.Main.main(Main.java:19)

Я использую usb4 java -javax 1.3.0 (последняя версия). Использование других методов, таких как getManufacturerString() и getProductString(), отлично работает, просто getSerialNumberString() не работает.

В качестве меры отладки я попробовал следующее:

System.out.println(usbDevice.getUsbDeviceDescriptor().iProduct());
System.out.println(usbDevice.getUsbDeviceDescriptor().iSerialNumber());
System.out.println(usbDevice.getUsbDeviceDescriptor().iManufacturer());

Какой выводит (сверху вниз) 3, 4 и 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...