Ошибка приведения объекта JInput 2.0.7

Я точно следовал инструкциям в этом руководстве, чтобы настроить JInput 2.0.7, но постоянно получаю следующую ошибку:

Loading: net.java.games.input.OSXEnvironmentPlugin
java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object;
    at net.java.games.input.OSXHIDDevice.addElements(OSXHIDDevice.java:163)
    at net.java.games.input.OSXHIDDevice.addElements(OSXHIDDevice.java:172)
    at net.java.games.input.OSXHIDDevice.getElements(OSXHIDDevice.java:178)
    at net.java.games.input.OSXEnvironmentPlugin.createControllersFromDevice(OSXEnvironmentPlugin.java:226)
    at net.java.games.input.OSXEnvironmentPlugin.enumerateControllers(OSXEnvironmentPlugin.java:262)
    at net.java.games.input.OSXEnvironmentPlugin.<init>(OSXEnvironmentPlugin.java:136)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.Class.newInstance(Class.java:442)
    at net.java.games.input.DefaultControllerEnvironment.getControllers(DefaultControllerEnvironment.java:157)
    at net.java.games.input.test.ControllerReadTest.<init>(ControllerReadTest.java:253)
    at net.java.games.input.test.ControllerReadTest.main(ControllerReadTest.java:302)

Кажется, что это ошибка самого класса, но я не видел этой ошибки нигде, и статья была опубликована только в прошлом году. Это проблема с JInput, или я что-то сделал?

1 ответ

at net.java.games.input.OSXHIDDevice.addElements(OSXHIDDevice.java:163)

это где ошибка происходит. похоже, это внутренняя ошибка JInput. Вам нужно изменить исходный код JInput, чтобы это исправить.

Заглянул в исходный код. Это метод, который выдает исключение.

private final void addElements(List elements, Map properties) {
    Object[] elements_properties = (Object[])properties.get(kIOHIDElementKey);
    if (elements_properties == null)
        return;
    for (int i = 0; i < elements_properties.length; i++) {
        Map element_properties = (Map)elements_properties[i];
        OSXHIDElement element = createElementFromElementProperties(element_properties);
        if (element != null) {
            elements.add(element);
        }
        addElements(elements, element_properties);
    }
}

В этой строке properties.get(kIOHIDElementKey) возвращает строку. Строка не может быть приведена к Object[]:

Object[] elements_properties = (Object[])properties.get(kIOHIDElementKey);
Другие вопросы по тегам