0

我完全按照本教程中的步骤设置 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 的问题,还是我做错了什么?

4

1 回答 1

0
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);
于 2018-03-29T07:13:56.527 回答