У меня есть следующий код 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
.