【问题标题】:JInput 2.0.7 object casting errorJInput 2.0.7 对象转换错误
【发布时间】:2018-03-08 07:21:46
【问题描述】:

我完全按照the steps in this tutorial 设置了 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 的问题,还是我做错了什么?

【问题讨论】:

    标签: java input lwjgl 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);
    

    【讨论】:

      猜你喜欢
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      • 2015-06-09
      相关资源
      最近更新 更多